具有默认值的默认模板参数?

时间:2020-08-05 22:43:21

标签: c++

我们可以得到以下内容并且有效:

template<std::size_t Size = 10>
fn(){...}


template<typename Size = std::size_t>
fn() {...}

但是怎么做?

template<typename Size = std::size_t=10>
fn() {...}

2 个答案:

答案 0 :(得分:7)

模板参数要么是类型,要么是值,不是两者。

您可以使用两个参数

template<typename Size = std::size_t, Size s = 10>

答案 1 :(得分:2)

您可能要求您的参数是std :: integral_constant(或同时提供'type'和'value'成员的某些其他类型:

template<typename Arg = std::integral_constant<size_t, 10>>
struct foo
{ };

但是通常我会说最好使用二参数方法。