Ete*_*ner 6 c++ templates variadic variadic-functions c++11
假设我有一个可变参数模板函数
template<typename... Args>
unsigned length(Args... args);
Run Code Online (Sandbox Code Playgroud)
如何使用长度函数找到参数列表的长度?
GMa*_*ckG 13
用途sizeof...:
template<typename... Args>
constexpr std::size_t length(Args...)
{
return sizeof...(Args);
}
Run Code Online (Sandbox Code Playgroud)
请注意,您不应该使用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
}
Run Code Online (Sandbox Code Playgroud)
注意,一切都是完全未经测试的.
| 归档时间: |
|
| 查看次数: |
1635 次 |
| 最近记录: |