std::enable_if, variadic template et constructeur
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:
Code:
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
}
}; |
A l'heure actuelle, pour avoir le comportement voulu, j'utilise static_assert:
Code:
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");
}
}; |
C'est plus une question pour satisfaire ma curiosité sur tout ce qui tourne autour des variadic template qu'une réelle nécessité.
Merci d'avance