max*_*x66 3 c++ templates well-formed variadic-templates c++11
标准大师的问题.
试图回答另一个问题,我开始怀疑代码的良好构成.
据我所知,以下代码格式不正确
int main ()
{
std::tuple<> a;
std::get<0>(a);
}
Run Code Online (Sandbox Code Playgroud)
因为std::get<I>(t),当ta是a时std::tuple<Ts...>,调用I是在范围之外时形成的[0, sizeof...(Ts)[.
在这种情况下sizeof...(Ts)为零,因此范围[0, 0[为空,因此std::get<I>(a)对于每个索引都是错误的I.
但是什么时候std::get<I>(a)通过一个空的可变背包扩展?
我的意思是:以下代码
#include <tuple>
template <typename ... Args>
void bar (Args const & ...)
{ }
template <std::size_t ... I>
void foo ()
{
std::tuple<> a;
bar( std::get<I>(a) ... );
}
int main ()
{
foo<>();
}
Run Code Online (Sandbox Code Playgroud)
使用格式错误的(?)调用(std::get<I>(a))但是零时间可变参数扩展(sizeof...(I)为零),是否格式正确或格式错误?
| 归档时间: |
|
| 查看次数: |
110 次 |
| 最近记录: |