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

C 11模板中的默认位置参数,第1张

概述允许将模板参数留空(使用<>),如何将位置参数留空或重写以实现相同的效果. template <int i = 0, int j = 1, int k = 2>void blah() { std::cout << i << " " << j << " " << k << std::endl;}int main() { blah(); // ok bla 允许将模板参数留空(使用<>),如何将位置参数留空或重写以实现相同的效果.
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;}
总结

以上是内存溢出为你收集整理的C 11模板中的默认位置参数全部内容,希望文章能够帮你解决C 11模板中的默认位置参数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/1237189.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存