Привязка с initializer_list принята G ++, но отвергнуто ClangC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Привязка с initializer_list принята G ++, но отвергнуто Clang

Сообщение Anonymous »

Следующий код принимается G ++ (14.2.1): < /p>
#include

template
void foo(T i, std::vector &v = {})
{ }

int main()
{
std::vector v;
foo(3, v);
}
< /code>
, но отклонен Clang (19.1.7) с: < /p>
non-const lvalue reference to type 'std::vector' cannot bind to an initializer list temporary
< /code>
Если я полагаюсь на аргумент по умолчанию (пропуская 2-й параметр), оба компилятора отклоняют код, что имеет смысл, поскольку предпринимается попытка связать неконфессиональную ссылку LVALUE с rvalue.
правильно ли Clang, отклонив код или G ++ правильно, принимая код?

Подробнее здесь: https://stackoverflow.com/questions/794 ... d-by-clang
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»