Перегрузка шаблона функции при вызове ссылочного типа, отклоненного clang, но принятого gcc и msvcC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Перегрузка шаблона функции при вызове ссылочного типа, отклоненного clang, но принятого gcc и msvc

Сообщение Anonymous »

Я написал следующую программу, в которой есть перегруженные шаблоны функций, но она отклонена clang и принята как gcc, так и msvc. Демо

Код: Выделить всё

#include 
#include 
template< class T > void f( T& t ){} ;
template< class T > void f( const T&& ) {};
int main()
{
int i = 0;
f(i); //clang:nope, gcc:ok, msvc:ok
}
Кланг говорит:

Код: Выделить всё

:10:5: error: call to 'f' is ambiguous
10 |     f(i); //clang:nope, gcc:ok, msvc:ok
|     ^~~~~~~
:4:26: note: candidate function [with T = int &]
4 | template< class T > void f( T& t ){} ;
|                          ^
:5:26: note: candidate function [with T = int &]
5 | template< class T > void f( const T&& ) {};
|
Я хочу знать, какой компилятор здесь правильный согласно стандарту C++.

Подробнее здесь: https://stackoverflow.com/questions/790 ... d-by-clang
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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