Quelqu'un peut-il me dire dans le but d'une valeur de modèle par défaut comme dansmodèle par défaut pas à la fin
template <typename, typename = void, int...> struct foo {};
lors de la déclaration foo<int, void, 5>
compilera mais foo<int, 5>
ne sera pas? N'est-ce pas le but de typename = void
afin que nous puissions omettre cette entrée afin qu'elle soit void
par défaut? Si une telle syntaxe n'est pas autorisée, alors pourquoi y avoir la valeur par défaut?
Il serait plus difficile que ça vaut la peine de faire 'foo' être assez intelligent pour passer la valeur par défaut et passer à 'int ...'. Bien sûr, c'est assez facile dans ce cas, mais dès que vous essayez de le généraliser, vous rencontrez des ambiguïtés et d'autres complications. –
chris
Il est difficile de mélanger des arguments de modèle par défaut et des modèles variés. – AndyG
Il est difficile de dire avec un contexte littéralement zéro pourquoi un morceau de code existe. – Barry