template<typename... Args>unsigned length(Args... args);
如何使用长度函数找到参数列表的长度?
解决方法 使用sizeof …:template<typename... Args>constexpr std::size_t length(Args...){ return sizeof...(Args);}
请注意,您不应使用unsigned,而应使用std :: size_t(在< cstddef>中定义).此外,该函数应该是一个常量表达式.
不使用sizeof …:
namespace detail{ template<typename T> constexpr std::size_t length(voID) { return 1; // length of 1 element } template<typename T,typename... Args> constexpr std::size_t length(voID) { return 1 + length<Args...>(); // length of one element + rest }}template<typename... Args>constexpr std::size_t length(Args...){ return detail::length<Args...>(); // length of all elements}
注意,一切都是完全未经测试的.
总结以上是内存溢出为你收集整理的c – 如何查找参数包的长度?全部内容,希望文章能够帮你解决c – 如何查找参数包的长度?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)