§5.3.1 Унарные операторы, раздел 3
Результат одинарный & Оператор является указателем на свой операнд. Операндом должно быть lvalue или квалифицированный идентификатор.
Что именно означает "должен быть" в этом контексте? Значит ли это ошибочно брать адрес временного? Мне было просто интересно, потому что g++ только предупреждает меня, а comeau отказывается компилировать следующую программу:
#include <string>
int main()
{
&std::string("test");
}
g++ предупреждение: taking address of temporary
comeau ошибка: expression must be an lvalue or a function designator
Кто-нибудь имеет компилятор Microsoft или другие компиляторы и может протестировать эту программу, пожалуйста?