标准大师的问题。
尝试回复another question,我开始怀疑代码是否格式良好。
据我所知,以下代码格式不正确
int main ()
{
std::tuple<> a;
std::get<0>(a);
}
因为当std::get<I>(t)
超出范围t
时std::tuple<Ts...>
I
的{{1}}时,[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<>();
}
使用格式错误的(?)调用(std::get<I>(a)
),但零时变可扩展(sizeof...(I)
为零),是否格式正确或格式不正确?