Конкретная форма привязки временно к константной ссылке не имеет никакого эффекта

Дано

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 */

Почему вторая форма «привязать временную ссылку к константной» кажется эквивалентной запрету?

0

Решение

Это просто еще один случай самый неприятный разбор, вы объявляете функцию, а не постоянную ссылку на A,

Вы можете исправить это, используя унифицированную инициализацию C ++ 11:

const A &b{A()};
2

Другие решения

Других решений пока нет …