【发布时间】:2010-07-15 09:55:29
【问题描述】:
我目前正在研究一个包含大量模板的类,并且能够构建元组的元组会使它更容易
但我在 MSVC++ 2010 中尝试了这个简单的代码:
#include <tuple>
void main() {
auto x = std::make_tuple(std::make_tuple(5, true));
}
我得到一个编译错误。如果我不使用std::make_tuple 而是直接使用std::tuple 的构造函数,也会出现同样的问题。
这是 MSVC 的错误还是标准不允许元组的元组?
【问题讨论】:
-
您收到的确切错误消息是什么?
-
非常非常长初始错误是:c:\logiciels\visual studio 10.0\vc\include\tuple(127): error C2440: 'initializing' : cannot convert from 'std::tr1 ::_Nil' 到 'bool'
-
我怀疑微软的元组实现是递归的,但是由于 Type0 已经是一个元组,它会与其他东西发生冲突
-
这在 g++ 4.5 上也失败了,但
std::make_tuple(std::make_tuple(5, true), 0);没问题。 -
您的代码也可以在 VC++2010 中编译,您认为这是标准禁止的还是两种实现中的错误?
标签: c++ visual-studio c++11 visual-c++ tuples