Итак, у меня есть код, который скомпилирован на MSVC 9 и некоторые предыдущие (не знаю, как далеко он идет ...), GCC, MingW, GCC on Mac ...MSVC 10 + Luabind + std :: vector == отказаться от компиляции
но одна линия, не компилируется на 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 :: класс _ :: Защита': не может вывести аргумент шаблона в качестве аргумента функции является ambiguou E: \ novashellSVN \ clanlibstuff \ novashell \ источник \ ListBindings.cpp 178
Это заставило меня потратить весь рабочий день ... Кто-нибудь знает, что изменилось на MSVC 10, чтобы вызвать это? Меня больше не беспокоит, потому что работа застряла, а потому, что это странно и странно.
EDIT: Я сравнивал «векторный» файл с 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)