Questions marquées «template-specialization»

4
Pourquoi le modèle de fonction ne peut pas être partiellement spécialisé?
Je sais que la spécification du langage interdit la spécialisation partielle du modèle de fonction. J'aimerais savoir pourquoi il l'interdit? Ne sont-ils pas utiles? 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, …


1
Clang a-t-il raison de rejeter le code dans lequel la classe imbriquée d'un modèle de classe est définie uniquement via des spécialisations?
Étant donné le modèle de classe suivant: template<typename T> struct Outer { struct Inner; auto f(Inner) -> void; }; nous définissons Innerséparément pour chaque spécialisation Outer: template<> struct Outer<int>::Inner {}; template<> struct Outer<double>::Inner {}; puis définissez la fonction membre fune fois pour toutes les spécialisations de Outer: auto Outer<T>::f(Inner) -> …

1
incohérence clang / gcc dans la spécialisation de classe
J'ai rencontré ce problème en essayant de spécialiser tuple_size/ tuple_elementpour une classe personnalisée en C ++ 17 pour la liaison structurée. Le code ci-dessous se compile dans GCC, mais pas dans clang (les deux versions de tronc, voir le lien ci-dessous). #include <type_traits> template<typename T, typename... Ts> using sfinae_t = …
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.