Вариад-значения-таблицы-тип с типами значения, приведенные в родительском шаблоне, принимается Clang, но отвергается GCCC++

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

Сообщение Anonymous »

Я строю типы признаков (аналогично std :: type_identity), чтобы представляют шаблонные образы различных ароматов. Шаблоны варидового значения смешанного типа являются особым случаем, и я могу думать только о том, чтобы делать их только через вложенные структуры, как показано ниже. < /P>

clang принимает это, GCC не делает. < /P>

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

template 
struct variadic_value_metatemplate_builder
{
template 
struct build
{
template 
using type = TT;
};
};
< /code>
(ссылка компилятора-Explorer) < /p>

Ошибка GCC: < /p>
:8:39: error: expansion pattern 'tt_Vs' contains no parameter packs [-Wtemplate-body]
8 |                 using type = TT;
Кто прав?
Формулировка ошибки GCC кажется неверным, но я думаю, что это связано с требованием для vs ... и ts ... иметь один и тот же размер, создавая vs (/code> не и ts ... . Но все они все еще параметр packs afaik.

Редактировать: в сторону: почему может быть полезно? Не очень хорошо). < /p>
Вы пишете процедуру тестирования для группы шаблонных графических операций. Некоторые из них из формы , некоторые из них и т. Д. Вы хотите написать общую процедуру тестирования для всех Forms , которые принимают параметр формы, набор соответствующих графических операций и набор значений тестирования ConstexPR для параметров. Затем вы можете сделать что -то вроде: < /p>

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

generic_graphics_test::test()
;
to каким-то образом проверить 2D и 3D-Undoable сорта GFX_TRANSLATE и GFX_SCALE . (где test () принимает экземпляры Build (выше) в качестве параметров шаблона, которые здесь представляют (необработанные, неразрешенные) :)) < /p>

, к сожалению, нет общего «ключевого слова шаблона-параметра-em> (но, вероятно, действительно сложно написать код компилятора), который можно было бы сделать для всех возможных Шаблон.

Подробнее здесь: https://stackoverflow.com/questions/795 ... late-is-ac
Ответить

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

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

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

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

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