And*_*zos 6 c++ variadic-functions variadic-templates c++11
请考虑以下代码:
template<class T>
size_t f(T t, size_t& x) { return x++; }
template<class... Args>
void g(Args... args)
{
size_t x = 0;
size_t y[] = { f(args, x)... };
for (size_t i = 0; i < sizeof...(args); i++)
assert(y[i] == i);
}
Run Code Online (Sandbox Code Playgroud)
C++ 11标准保证的断言不会触发吗?为什么或者为什么不?
是的,保证不会开火.请参阅以下引号:
§14.5.3Variadic模板:
包扩展可以在初始化列表中发生; 该模式是初始化子句.
§8.5.1聚合:
初始化子句中的完整表达式按它们出现的顺序进行评估.
归档时间: |
|
查看次数: |
1146 次 |
最近记录: |