在浏览标准时,我在模板声明中发现了一些令我困惑的语法:
template <typename T> class myarray;
template </*...*/, template <typename T> class C = myarray>
是什么class C = myarray
意思?它是默认参数吗?谢谢。
在浏览标准时,我在模板声明中发现了一些令我困惑的语法:
template <typename T> class myarray;
template </*...*/, template <typename T> class C = myarray>
是什么class C = myarray
意思?它是默认参数吗?谢谢。
这是模板模板参数的默认值。如果您不指定参数,则默认为myarray
.
例子:
template <typename> class Foo;
template <typename> class Bar;
template <typename T, template <typename> class C = Foo>
class Zip
{
typedef C<T> type; // example use of "C"
// ...
};
Zip<int, Bar> x; // OK
Zip<int> y; // OK, y has type Zip<int, Foo>
它基本上是参数的“默认值”。