代码之家  ›  专栏  ›  技术社区  ›  Tomaka17

C++的0X:元组元组允许吗?

  •  8
  • Tomaka17  · 技术社区  · 16 年前

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

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

    #include <tuple>
    
    void main() {
         auto x = std::make_tuple(std::make_tuple(5, true));
    }
    

    我得到一个编译错误。如果我不使用 std::make_tuple 但是直接的 std::tuple 的构造函数。

    是MSVC的bug还是标准不允许元组的元组?

    2 回复  |  直到 6 年前
        1
  •  4
  •   James McNellis    16 年前

    • 如果我们使用 std::tr1::tuple 并显式声明类型,而不是使用 auto 然后Visual C++ 2008编译代码无错误。试图用VisualC++ 2010编译相同的代码会导致你看到的错误。

    • 如果我们使用 boost::tuple 显式声明类型而不是使用 汽车

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

        2
  •  3
  •   Ben Voigt    16 年前

    你只做了一个只有一个成员的元组——这不是违背了元组的目的吗?不管怎样,我怀疑这会导致歧义。

    make_tuple tuple 建造师。当 元组 构造函数是用一个参数调用的,这个参数也是 ,转换构造函数可能比包装构造函数更合适。这就是问题所在。

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