Итак, у меня есть код, который скомпилирован на MSVC 9 и несколько предыдущих (не знаю, как далеко он уходит ...), GCC, MingW, GCC на Mac ...
Но одна строка,не компилируется в 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 (некоторые говорят, что есть 2 аргумента, когда ожидалось 1, 3, 5 и один говорит «слишком много аргументов»), а некоторые о сбое при перегрузке, наиболее очевидный:
Ошибка 7, ошибка C2914: «luabind :: class _ :: def»: невозможно вывести шаблонаргумент как функция аргумент является неоднозначным E: \ novashellSVN \ clanlibstuff \ novashell \ source \ ListBindings.cpp 178
Это заставило меня напрасно тратить весь рабочий день ... Кто-то знает, что изменилось в MSVC10, чтобы вызвать это?Это меня больше не беспокоит из-за застрявшей работы, а потому, что это странно и странно.
РЕДАКТИРОВАТЬ: Я сравнил «векторный» файл из 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)