C++ 允许元组的元组吗?

C++ 允许元组的元组吗?,c++,visual-studio,c++11,visual-c++,tuples,C++,Visual Studio,C++11,Visual C++,Tuples,我目前正在处理一个有很多模板的类,能够构建元组的元组会让它变得更容易 但我在MSVC++2010中尝试了以下简单代码: #include <tuple> void main() { auto x = std::make_tuple(std::make_tuple(5, true)); } #包括 void main(){ autox=std::make_tuple(std::make_tuple(5,true)); } 我得到一个编译错误。如果我不使用std::mak

我目前正在处理一个有很多模板的类,能够构建元组的元组会让它变得更容易

但我在MSVC++2010中尝试了以下简单代码:

#include <tuple>

void main() {
     auto x = std::make_tuple(std::make_tuple(5, true));
}
#包括
void main(){
autox=std::make_tuple(std::make_tuple(5,true));
}
我得到一个编译错误。如果我不使用
std::make_tuple
而是直接使用
std::tuple
的构造函数,同样的问题也会发生

这是MSVC的错误还是标准不允许元组的元组?

更多数据点:

    < > > >使用.<代码> STD::Tr1::tuple < /C> >并显式地声明类型,而不是使用<代码> Auto < /C> >,Visual C++ 2008编译代码无错误。试图用VisualC++ 2010编译相同的代码会导致你看到的错误。

    <> > > >使用Ung> > Boo::tuple < /C> >显式地声明类型,而不是使用<代码> Auto < /C> >,然后Visual C++ 2008和Visual C++ 2010都编译代码无错误。


看起来这可能是一个实现错误。

您创建了一个只有一个成员的元组,这不是违背了元组的目的吗?无论如何,我怀疑这会导致歧义

make_tuple
将类型推断与对
tuple
构造函数的调用相结合。当使用单个参数调用
元组
构造函数时,也就是
元组
,转换构造函数可能比包装构造函数更合适。因此问题就来了


允许元组的元组。1-元组可能不是。

您得到的确切错误消息是什么?非常长,初始错误是:c:\logiciels\visual studio 10.0\vc\include\tuple(127):错误C2440:“初始化”:无法从“std::tr1::\u Nil”转换为“bool”,我怀疑Microsoft的元组实现是递归的,但由于Type0已经是元组,它与其他东西冲突这在g++4.5上也失败了,但是
std::make_tuple(std::make_tuple(5,true),0)还可以。您的代码也可以在VC++2010中编译,您认为这是标准所禁止的,还是两种实现都存在缺陷?