Почему MSVC пытается создать неправильный шаблон, а GCC предупреждает, когда зависимое имя имеет двусмысленность разбораC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему MSVC пытается создать неправильный шаблон, а GCC предупреждает, когда зависимое имя имеет двусмысленность разбора

Сообщение Anonymous »

Я пытаюсь (по эзотерическим причинам, которые я не хочу здесь обсуждать) написать шаблон класса, у которых в экземплярах есть участники, которые могут быть либо функциями, либо переменными (в зависимости от параметров шаблона) и которые могут использоваться с syntax на данном сайте:

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

struct Comparable
{
template
friend bool operator(T const &value, Comparable zero) { return zero < value; }
};

template
struct Conditional;

template
struct Conditional
{
Comparable test;
};

template
struct Conditional
{
template
void test(Comparable) { }
};

void bar() { }

template
void foo(T arg)
{
Conditional().test(Comparable());
Conditional().test(Comparable());
}

int main() { foo(bar); return 0; }
< /code>
В то время как Clang снимает этот код нормальный, GCC выпускает A -Wmissing-template-Keyword < /code> предупреждение, а MSVC задыхается под него под /периссив-
.
Я нахожу это перегрузки: < /p>



Подробнее здесь: https://stackoverflow.com/questions/795 ... -when-a-de
Ответить

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

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

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

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

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