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模板中的默认位置参数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)