默认模板参数语法

时间:2016-04-18 22:20:02

标签: c++ templates c++11 variadic-templates

对于你们许多人来说,我的问题可能看起来很奇怪,我真的很抱歉。

我记得,几年前我曾经管理过定义一个带有默认模板参数的类,以便语法

Foo<> f;

可以替换为

Foo f;

然而,我不记得我是怎么做到的。我认为Foo类是使用可变参数模板定义的,默认模板参数是一个整数值(SIZE),但我无法重现目标语法。

有人知道怎么做吗? 如果这只是一个梦,我真的很抱歉!

编辑:好吧,据我记忆所及,诀窍的基础是重新定义

template<int SIZE=0>
class Foo;

使用一些可变参数模板。但我知道我的问题很奇怪,并且可能无法获得这样的语法...:)

2 个答案:

答案 0 :(得分:1)

你可能想要像

这样的东西
template<size_t SIZE = 0>
struct Foo {
   // ...
};

请参阅Demo

将其减少到

Foo f;
但是,

是不可能的。

答案 1 :(得分:1)

一个不错的解决方案是为您键入一个别名。

template<std::size_t size = 0>
struct Foo {
   // ...
};

using DefaultFoo = Foo<>;

虽然你不能拥有相同的名字......