Неупомянутый вычет пакетов параметров с несколькими упаковками - G ++ не удается, Clang ++ принимает - кто прав?C++

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

Сообщение Anonymous »

Функция, которую я хочу написать, имеет несколько пакетов типа переменных, поэтому я использую типы тегов без данных, чтобы явно указывать элементы каждого пакета типа. (оба с использованием багажника, std = c ++ 26) < /p>
template
struct SVariadicTypeset
{};

template
void moo(SVariadicTypeset, SVariadicTypeset, As ... a_s, Bs ... b_s);

void baa()
{
moo(SVariadicTypeset< >{}, SVariadicTypeset< >{}); // ok
moo(SVariadicTypeset{}, SVariadicTypeset< >{}, 1); // fails on g++
moo(SVariadicTypeset< >{}, SVariadicTypeset{}, 2); // ok
moo(SVariadicTypeset{}, SVariadicTypeset{}, 1, 2); // fails on g++
}
< /code>
через Compiler Explorer < /p>
Это законное C ++? < /p>
g ++.:6:6: note: template argument deduction/substitution failed:
:11:20: note: inconsistent parameter pack deduction with '' and ''
< /code>
утверждая '' и '' несовместимые, кажется, ошибка, верно? Итак, я предполагаю, что G ++ - плохо себя по себе.


Подробнее здесь: https://stackoverflow.com/questions/796 ... ls-clang-a
Ответить

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

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

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

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

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