Минимальный пример, который я мог бы сократить из своего кода, выглядит следующим образом:
Код: Выделить всё
struct B { virtual ~B() {} };
struct A : B {};
A foo(const B*) { return {}; }
A bar() { return {}; }
int main() {
//foo(&bar()); //error
auto v = foo(&bar()); //ok in MSVC
}
C2102: '&' требует l-значения
А более длинная строка auto v = foo(&bar()); подходит для MSVC. Онлайн-демо
Действительно ли вторая строка разрешена в C++, а первая — нет?
Подробнее здесь: https://stackoverflow.com/questions/798 ... s-consumed
Мобильная версия