воскресенье, 30 ноября 2014 г.

Как поправить ошибку компиляции gtest "std::tuple' : too many template arguments"

Сегодня в своих модульных тестах решил заменить 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-файле:
      WIN32;_VARIADIC_MAX=10;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
Этого хватило чтобы ошибка исчезла. Насколько это правильно покажет время, а пока можно развивать свой проект далее.

Комментариев нет: