C ++ 11模板中的默认位置参数

赫普·德灵顿

允许将模板参数保留为空白(使用<>),如何将位置参数保留为空白或对其进行重做以达到相同的效果。

template <int i = 0, int j = 1, int k = 2>
void blah() {
    std::cout << i << " " << j << " " << k << std::endl;
}

int main() {
    blah();        // ok
    blah<>();      // ok
    blah<1>();     // ok, i = 1
    blah<1,,3>();  // not ok, i = 1, j = 1 (default), k = 3
    return 0;
}
右折

这是不可能的。你必须通过。

这是一个建议:

auto constexpr default_j = 1;

template <int i = 0, int j = default_j, int k = 2>
void blah() {
    std::cout << i << " " << j << " " << k << std::endl;
}

int main() {
    blah();                  // ok
    blah<>();                // ok
    blah<1>();               // ok, i = 0
    blah<1, default_j, 3>(); // ok, explicit and without duplicate magic numbers!
    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++中带有模板的默认参数

来自分类Dev

C ++ 11“使用”类型别名的默认模板参数

来自分类Dev

在C ++ 11中枚举布尔模板参数

来自分类Dev

模板中的C ++默认参数不允许?

来自分类Dev

如何在C ++中调用默认模板功能参数?

来自分类Dev

C ++ 17中的歧义错误(模板模板参数和默认参数问题)

来自分类Dev

具有默认参数的C ++模板参数

来自分类Dev

C ++ 11中的可变参数模板和多重继承

来自分类Dev

C ++ 11:模板参数中的SFINAE,GCC与Clang

来自分类Dev

成员函数指针的decltype作为c ++ 11中的模板参数

来自分类Dev

基于C ++ 11中的模板参数选择数组大小?

来自分类Dev

如何推断C ++ 11中的模板参数类型?

来自分类Dev

在c ++ 11中调用模板参数的函数,其中模板参数为chrono :: system_clock

来自分类Dev

C ++中的默认参数

来自分类Dev

C ++中的模板参数

来自分类Dev

C ++错误:函数模板中可能未使用默认模板参数

来自分类Dev

C ++模板,默认参数作为方法

来自分类Dev

C ++模板构造函数默认参数

来自分类Dev

C ++ 11中具有多个模板参数的模板函数的专业化

来自分类Dev

尝试将C ++ 11代码转换为C ++ 03时默认函数模板参数出错

来自分类Dev

参数名模板的参数化模板c ++ 11

来自分类Dev

知道其参数位置的C ++模板

来自分类Dev

在C ++ 11中使用模板参数的递归可变参数void函数

来自分类Dev

c ++ 11递归可变参数模板

来自分类Dev

C ++ 11模板,参数包的别名

来自分类Dev

C ++ 11中的模板约束

来自分类Dev

C ++-无法将默认参数添加到类模板成员的离线定义中

来自分类Dev

C ++模板声明中的范围和默认参数:澄清标准版

来自分类Dev

静态私有函数,其模板类型为C ++中的默认参数

Related 相关文章

热门标签

归档