Bonjour tout le monde,
J'ai une petite question dont je n'arrive pas à trouver de réponse sur le net: comment/peut-on utiliser std::enable_if avec les variadic templates pour activer ou non tel constructeur en fonction du nombre de paramètre?
Voici un petit exemple:
A l'heure actuelle, pour avoir le comportement voulu, j'utilise static_assert:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 template<size_t SIZE = 3> class Test { public: template<typename... Args> Test(typename<std::enable_if<sizeof...(Args) <= SIZE, Args...>::type args) // J'ai essayé différentes syntaxe mais ça ne semble pas fonctionner { // blabla } };
C'est plus une question pour satisfaire ma curiosité sur tout ce qui tourne autour des variadic template qu'une réelle nécessité.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 template<size_t SIZE = 3> class Test { public: template<typename... Args> Test(Args... args) { static_assert(sizeof...(Args) <= SIZE, "Trop d'arguments"); } };
Merci d'avance
Partager