Вопросы с тегом «template-specialization»

4
Почему шаблон функции не может быть частично специализированным?
Я знаю, что спецификация языка запрещает частичную специализацию шаблона функции. Хотелось бы узнать, почему он это запрещает? Разве они не полезны? template<typename T, typename U> void f() {} //allowed! template<> void f<int, char>() {} //allowed! template<typename T> void f<char, T>() {} //not allowed! template<typename T> void f<T, int>() {} //not …

6
Частичная специализация шаблона функции с ++?
Я знаю, что приведенный ниже код является частичной специализацией класса: template <typename T1, typename T2> class MyClass { … }; // partial specialization: both template parameters have same type template <typename T> class MyClass<T,T> { … }; Также я знаю, что C ++ не допускает частичную специализацию шаблона функции (допускается …

1
Правильно ли Clang отклонять код, в котором вложенный класс шаблона класса определяется только через специализации?
Дан следующий шаблон класса: template<typename T> struct Outer { struct Inner; auto f(Inner) -> void; }; мы определяем Innerотдельно для каждой специализации Outer: template<> struct Outer<int>::Inner {}; template<> struct Outer<double>::Inner {}; а затем определить функцию-член fодин раз для всех специализаций Outer: auto Outer<T>::f(Inner) -> void { } но Кланг (9.0.0) …

1
несоответствие clang / gcc в специализации классов
Я столкнулся с этой проблемой, пытаясь специализировать tuple_size/ tuple_elementдля пользовательского класса в C ++ 17 для структурированного связывания. Ниже код компилируется в GCC, но не в clang (обе версии транка, см. Ссылку ниже). #include <type_traits> template<typename T, typename... Ts> using sfinae_t = T; template<typename T, bool... Bs> using sfinae_v_t = …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.