Почему 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

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