默认模板不在最后

时间:2017-10-12 19:14:44

标签: c++ c++11 templates

有人可以告诉我默认模板值的用途,如

  template <typename, typename = void, int...> struct foo {};

在声明foo<int, void, 5>时会编译但foo<int, 5>不会编译? 不是typename = void的目的,以便我们可以省略该条目,以便它默认为void吗?如果不允许这样的语法,那么为什么还有默认值?

1 个答案:

答案 0 :(得分:2)

由于参数包可以为空,因此在此示例中将编译foo<int>。如果没有默认参数,则明确需要foo<int, void>