Проблемы со специализацией зависимого типа. GCC против ClangC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Проблемы со специализацией зависимого типа. GCC против Clang

Сообщение Anonymous »

Необходимое значение, которое мне нужно, зависит от параметров вложенного шаблона класса. Следующий код: < /p>
template struct MyTmpl{};

template
struct MyTmpl
{
template
struct inc
{
static constexpr int val = 0;
};

template
struct inc
{
static constexpr int val = 42;
};
};
< /code>
Скомпилируется и возвращает 0 и 42 на Clang и MSVC. Но он отказывается компилировать на GCC: < /p>
:16:19: error: explicit specialization in non-namespace scope 'struct MyTmpl' [-Wtemplate-body]
16 | template
| ^
:17:16: error: too few template-parameter-lists [-Wtemplate-body]
17 | struct inc
| ^~~~~~~~~~~
< /code>
Я не очень сильный (очень слабый) в тонкостях стандарта. Это чей -то недостаток? Или такая зависимость не описана стандартом и зависит от видения разработчиков компилятора? Или возможно, чтобы необязательно настроить это?

demo: https://godbolt.org/z/getrn6tne

Подробнее здесь: https://stackoverflow.com/questions/797 ... c-vs-clang
Ответить

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

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

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

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

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