C++ 允许元组的元组吗?
我目前正在处理一个有很多模板的类,能够构建元组的元组会让它变得更容易 但我在MSVC++2010中尝试了以下简单代码: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
#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中编译,您认为这是标准所禁止的,还是两种实现都存在缺陷?