временным объектом, ну то есть кажется логичным, что значение строчки будет скопировано, и поле foo будет корректно проинициализировано в течение всей жизни объекта, но на деле - нет. Почему так? Как это понять, чтобы запомнить?
class A {
const std::string &foo;
public:
A() : foo("bar") {}
~A() {
std::cout << foo << std::endl;
}
};
Потому что в стандарте написано, что поля-ссылки не могут быть инициализированы rvalue
а где оно храниться должно? sizeof(A) == sizeof(const std::string&), там нет места на ещё один std::string
Обсуждают сегодня