#include <tuple>
int main()
{
int xa = 1;
int ya = 2;
auto const& [xb, yb] = std::tuple<int&, int&>(xa, ya);
xb = 9; // Shouldn't this be read-only?
return xa + ya;
}
Это не только компилируется, но и возвращает 11.
Итак, два вопроса:
-
Почему я могу писать в xb, когда он указан как auto const &? Разве это не может скомпилироваться?
-
Почему я не могу заменить "auto const &" на "auto &" и скомпилировать? Как Clang (6.0), так и g++ (7.3) жалуются на сообщение об ошибке, такое как "ссылка на не-const laleue типа <...> не может привязываться к временному типу tuple <...>
Спасибо!