Дано
struct A
{
void a(void) { std::cout << "A" << std::endl; }
};
const A &a = A(); /* Make a copy of A and bind to a */
const A &b(A()); /* Does nothing */
a.a(); /* Prints A */
b.a(); /* Error, same as if b doesn't exist */
Почему вторая форма «привязать временную ссылку к константной» кажется эквивалентной запрету?
Это просто еще один случай самый неприятный разбор, вы объявляете функцию, а не постоянную ссылку на A
,
Вы можете исправить это, используя унифицированную инициализацию C ++ 11:
const A &b{A()};
Других решений пока нет …