Vin*_*ent 6 c++ tuples sizeof variadic-templates c++11
考虑以下功能:
template<typename... List>
inline unsigned int myFunction(const List&... list)
{
return /* SOMETHING */;
}
Run Code Online (Sandbox Code Playgroud)
什么是最简单的事情而不是/* SOMETHING */为了返回sizeof所有参数的总和?
例如 myFunction(int, char, double) = 4+1+8 = 13
Mik*_*our 13
unsigned myFunction() {return 0;}
template <typename Head, typename... Tail>
unsigned myFunction(const Head & head, const Tail &... tail) {
return sizeof head + myFunction(tail...);
}
Run Code Online (Sandbox Code Playgroud)
在C++ 17中,使用折叠表达式:
template<typename... List>
inline constexpr unsigned int myFunction(const List&... list)
{
return (0 + ... + sizeof(List));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3259 次 |
| 最近记录: |