有人可以告诉我默认模板值的用途,如
template <typename, typename = void, int...> struct foo {};
在声明foo<int, void, 5>
时会编译但foo<int, 5>
不会编译?
不是typename = void
的目的,以便我们可以省略该条目,以便它默认为void
吗?如果不允许这样的语法,那么为什么还有默认值?
答案 0 :(得分:2)
由于参数包可以为空,因此在此示例中将编译foo<int>
。如果没有默认参数,则明确需要foo<int, void>
。