所以,我有一个代码,它是在 MSVC 9 和一些以前的版本上编译的(不知道它有多远……),GCC,MingW,Mac 上的 GCC……
但是有一行,不能在 MSVC 上编译:
class_< vector<unsigned int> >("LayerList")
.def(constructor<>())
.def("GetCount", &vector<unsigned int>::size)
.def("Get", &NumberGet)
.def("Add", &vector<unsigned int>::push_back) //this line refuses to compile
.def("__tostring", &LayerListToString)
如果我评论它,应用程序编译得很好(但在运行时中断),如果我将此块移动到其他地方(甚至在其他文件中),这个特定的行会不断给出错误......改变块内的顺序也不能解决它。
它给出了 9 个错误,其中大多数是关于 .def 中参数数量错误的错误(有人说当它期望 1、3、5 时有 2 个参数,一个说“参数太多”),还有一些关于重载失败,最明显一:
错误 7 错误 C2914: 'luabind::class_::def' : 无法推断模板参数,因为函数参数不明确 E:\novashellSVN\clanlibstuff\novashell\source\ListBindings.cpp 178
这让我浪费了整个工作日......有人知道MSVC 10上发生了什么变化导致这种情况吗?它甚至不再因为工作卡住而困扰我,而是因为它是多么令人费解和奇怪。
编辑:我将来自 MSVC 10 的“矢量”文件与其他 MSVC 和 GCC 进行了比较,实际上在 MSVC 中它有 3 个版本,有人知道我是如何让它加载特定版本的吗?
三个版本:
void push_back(const _Ty& _Val) //the one in GCC and older MSVC, thus the one I want
void push_back(_Ty&& _Val)
void push_back(bool _Val)