Сегодня в своих модульных тестах решил заменить Boost.Test библиотекой Google C++ Testing Framework. Применяя MS Visual Studio 2012 столкнулся с тем, что приложение с тестами не компилируется и выдает ошибку в сабже.
Задав в google поисковый запрос "gtest std::touple compile error" узнал, что не единственный кто с подобным столкнулся.
Оказывается все дело в поддержке новых фич C++11 студией. Другими словами MSVS 2012 не особо хорошо поддерживает новую фичу "variadic templates". Однако решение есть и оно описано Google Test in Visual Studio 2012 или C2977: 'std::tuple' : too many template arguments (MSVC11).
Заключается оно в том что в свойствах проекта нужно найти опции Precompiled Definitions и задать макрос _VARIADIC_MAX равным 10. Вот что сейчас имеется в моем vcxproj-файле:
Задав в google поисковый запрос "gtest std::touple compile error" узнал, что не единственный кто с подобным столкнулся.
Оказывается все дело в поддержке новых фич C++11 студией. Другими словами MSVS 2012 не особо хорошо поддерживает новую фичу "variadic templates". Однако решение есть и оно описано Google Test in Visual Studio 2012 или C2977: 'std::tuple' : too many template arguments (MSVC11).
Заключается оно в том что в свойствах проекта нужно найти опции Precompiled Definitions и задать макрос _VARIADIC_MAX равным 10. Вот что сейчас имеется в моем vcxproj-файле:
Этого хватило чтобы ошибка исчезла. Насколько это правильно покажет время, а пока можно развивать свой проект далее.WIN32;_VARIADIC_MAX=10;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
Комментариев нет:
Отправить комментарий