Closed GoogleCodeExporter closed 9 years ago
The problem is in Visual Studio 2012 RC. Workaround for this is to add a
preprocessor define _VARIADIC_MAX=10 for the projects using googletest. This
define could be added to googletest headers (for VC11 compiler specifically) to
get it to work "out-of-the-box".
More info about the issue:
http://stackoverflow.com/questions/8274588/c2977-stdtuple-too-many-template-argu
ments-msvc11
Original comment by timo.kam...@tribestudios.com
on 8 Jun 2012 at 11:30
I think something like that should be added to CMakeLists.txt instead of
impacting the source files:
if( MSVC ) # VS2012 doesn't support correctly the tuples yet
add_definitions( /D _VARIADIC_MAX=10 )
endif()
This works perfectly for me. No need to touch the sources. They should be
independent from this issue.
Original comment by mjklaim@gmail.com
on 20 Jul 2012 at 4:06
Just tried to compile Google Test 1.6 with VS2010 RTM; it still fails to build
due the the reported lack of support for Variadic Templates - the solution
suggested with regards to _VARIADIC_MAX=10 does not solve the problem either -
any other suggestions on how to get Google Test running on VS2012?
Original comment by sina.jaz...@gmail.com
on 22 Aug 2012 at 5:22
What do you mean it don't solve the problem either? I've been using google test
on VS2012 for a month using the _VARIADIC_MAX=10 trick.
Original comment by mjklaim@gmail.com
on 22 Aug 2012 at 7:57
where did you define _VARIADIC_MAX=10 ? I tried adding "
_VARIADIC_MAX=10" as a pre processor definition and it made no
difference.
Original comment by sina.jaz...@gmail.com
on 26 Aug 2012 at 12:22
Thanks I've now managed to get it to compile using the
_VARIADIC_MAX=10 tirck; the issue I had was caused by forcing GMock to
use it's own version of Tuple library. Without this, it works fine.
Thanks for your reply.
Original comment by sina.jaz...@gmail.com
on 26 Aug 2012 at 12:42
Also an issue with VS2012 Pro on Windows 7 x64 (not only on Windows 8 RC or
others)
_This issue is only related to VS2012_
all versions of gtest up to 1.6.0 are affected.
Appending
if( MSVC ) # VS2012 doesn't support correctly the tuples yet
add_definitions( /D _VARIADIC_MAX=10 )
endif()
to the end of the CMakeLists.txt in gtest/ solves the problem. Please add this
to FAQ/Instructions and/or fix it.
Original comment by ThEBliZZ...@gmail.com
on 4 Sep 2012 at 10:56
Ошибка 4 error C3203: tuple: неспециализированный
класс шаблон нельзя использовать в
качестве аргумента шаблон для параметра
шаблон "T", требуется действительный
тип gtest\internal\gtest-param-util-generated.h 4017
Ошибка 8 error C3203: tuple: неспециализированный
класс шаблон нельзя использовать в
качестве аргумента шаблон для параметра
шаблон "T", требуется действительный
тип gtest\internal\gtest-param-util-generated.h 4030
Ошибка 10 error C3203: tuple: неспециализированный
класс шаблон нельзя использовать в
качестве аргумента шаблон для параметра
шаблон "T", требуется действительный
тип gtest\internal\gtest-param-util-generated.h 4035
Ошибка 12 error C3203: tuple: неспециализированный
класс шаблон нельзя использовать в
качестве аргумента шаблон для параметра
шаблон "T", требуется действительный
тип gtest\internal\gtest-param-util-generated.h 4042
Ошибка 15 error C3203: tuple: неспециализированный
класс шаблон нельзя использовать в
качестве аргумента шаблон для параметра
шаблон "T", требуется действительный
тип gtest\internal\gtest-param-util-generated.h 4044
Ошибка 17 error C3203: tuple: неспециализированный
класс шаблон нельзя использовать в
качестве аргумента шаблон для параметра
шаблон "T", требуется действительный
тип gtest\internal\gtest-param-util-generated.h 4077
Ошибка 19 error C3203: tuple: неспециализированный
класс шаблон нельзя использовать в
качестве аргумента шаблон для параметра
шаблон "T", требуется действительный
тип gtest\internal\gtest-param-util-generated.h 4119
Ошибка 21 error C3203: tuple: неспециализированный
класс шаблон нельзя использовать в
качестве аргумента шаблон для параметра
шаблон "T", требуется действительный
тип gtest\internal\gtest-param-util-generated.h 4123
Ошибка 23 error C3203: tuple: неспециализированный
класс шаблон нельзя использовать в
качестве аргумента шаблон для параметра
шаблон "T", требуется действительный
тип gtest\internal\gtest-param-util-generated.h 4204
Ошибка 26 error C3203: tuple: неспециализированный
класс шаблон нельзя использовать в
качестве аргумента шаблон для параметра
шаблон "T", требуется действительный
тип gtest\internal\gtest-param-util-generated.h 4256
Ошибка 30 error C3203: tuple: неспециализированный
класс шаблон нельзя использовать в
качестве аргумента шаблон для параметра
шаблон "T", требуется действительный
тип gtest\internal\gtest-param-util-generated.h 4270
Ошибка 32 error C3203: tuple: неспециализированный
класс шаблон нельзя использовать в
качестве аргумента шаблон для параметра
шаблон "T", требуется действительный
тип gtest\internal\gtest-param-util-generated.h 4275
Ошибка 34 error C3203: tuple: неспециализированный
класс шаблон нельзя использовать в
качестве аргумента шаблон для параметра
шаблон "T", требуется действительный
тип gtest\internal\gtest-param-util-generated.h 4282
Ошибка 37 error C3203: tuple: неспециализированный
класс шаблон нельзя использовать в
качестве аргумента шаблон для параметра
шаблон "T", требуется действительный
тип gtest\internal\gtest-param-util-generated.h 4284
Ошибка 39 error C3203: tuple: неспециализированный
класс шаблон нельзя использовать в
качестве аргумента шаблон для параметра
шаблон "T", требуется действительный
тип gtest\internal\gtest-param-util-generated.h 4320
Ошибка 41 error C3203: tuple: неспециализированный
класс шаблон нельзя использовать в
качестве аргумента шаблон для параметра
шаблон "T", требуется действительный
тип gtest\internal\gtest-param-util-generated.h 4366
Ошибка 43 error C3203: tuple: неспециализированный
класс шаблон нельзя использовать в
качестве аргумента шаблон для параметра
шаблон "T", требуется действительный
тип gtest\internal\gtest-param-util-generated.h 4370
Ошибка 45 error C3203: tuple: неспециализированный
класс шаблон нельзя использовать в
качестве аргумента шаблон для параметра
шаблон "T", требуется действительный
тип gtest\internal\gtest-param-util-generated.h 4456
Ошибка 48 error C3203: tuple: неспециализированный
класс шаблон нельзя использовать в
качестве аргумента шаблон для параметра
шаблон "T", требуется действительный
тип gtest\internal\gtest-param-util-generated.h 4738
Ошибка 51 error C3203: tuple: неспециализированный
класс шаблон нельзя использовать в
качестве аргумента шаблон для параметра
шаблон "T", требуется действительный
тип gtest\internal\gtest-param-util-generated.h 4782
Ошибка 1 error C2977: std::tuple: слишком много
аргументов шаблон gtest\gtest-printers.h 550
Ошибка 2 error C2977: std::tuple: слишком много
аргументов шаблон gtest\gtest-printers.h 558
Ошибка 3 error C2977: std::tuple: слишком много
аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4017
Ошибка 7 error C2977: std::tuple: слишком много
аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4019
Ошибка 25 error C2977: std::tuple: слишком много
аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4256
Ошибка 29 error C2977: std::tuple: слишком много
аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4258
Ошибка 47 error C2977: std::tuple: слишком много
аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4738
Ошибка 50 error C2977: std::tuple: слишком много
аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4782
Ошибка 14 error C2955: testing::internal::ParamIteratorInterface: для
использования класса шаблон требуется
список аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4042
Ошибка 36 error C2955: testing::internal::ParamIteratorInterface: для
использования класса шаблон требуется
список аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4282
Ошибка 6 error C2955: testing::internal::ParamGeneratorInterface: для
использования класса шаблон требуется
список аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4017
Ошибка 28 error C2955: testing::internal::ParamGeneratorInterface: для
использования класса шаблон требуется
список аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4256
Ошибка 5 error C2955: std::tuple: для использования
класса шаблон требуется список аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4017
Ошибка 9 error C2955: std::tuple: для использования
класса шаблон требуется список аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4030
Ошибка 11 error C2955: std::tuple: для использования
класса шаблон требуется список аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4035
Ошибка 13 error C2955: std::tuple: для использования
класса шаблон требуется список аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4042
Ошибка 16 error C2955: std::tuple: для использования
класса шаблон требуется список аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4044
Ошибка 18 error C2955: std::tuple: для использования
класса шаблон требуется список аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4077
Ошибка 20 error C2955: std::tuple: для использования
класса шаблон требуется список аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4119
Ошибка 22 error C2955: std::tuple: для использования
класса шаблон требуется список аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4123
Ошибка 24 error C2955: std::tuple: для использования
класса шаблон требуется список аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4204
Ошибка 27 error C2955: std::tuple: для использования
класса шаблон требуется список аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4256
Ошибка 31 error C2955: std::tuple: для использования
класса шаблон требуется список аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4270
Ошибка 33 error C2955: std::tuple: для использования
класса шаблон требуется список аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4275
Ошибка 35 error C2955: std::tuple: для использования
класса шаблон требуется список аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4282
Ошибка 38 error C2955: std::tuple: для использования
класса шаблон требуется список аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4284
Ошибка 40 error C2955: std::tuple: для использования
класса шаблон требуется список аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4320
Ошибка 42 error C2955: std::tuple: для использования
класса шаблон требуется список аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4366
Ошибка 44 error C2955: std::tuple: для использования
класса шаблон требуется список аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4370
Ошибка 46 error C2955: std::tuple: для использования
класса шаблон требуется список аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4456
Ошибка 49 error C2955: std::tuple: для использования
класса шаблон требуется список аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4738
Ошибка 52 error C2955: std::tuple: для использования
класса шаблон требуется список аргументов
шаблон gtest\internal\gtest-param-util-generated.h 4782
Original comment by kolan...@gmail.com
on 13 Sep 2012 at 7:03
I am using gtest 1.6.0 ans VS2012. I tried Appending
if( MSVC ) # VS2012 doesn't support correctly the tuples yet
add_definitions( /D _VARIADIC_MAX=10 )
endif()
to the end of the CMakeLists.txt It does not work. I have also tried defining
_VARIADIC_MAX to 10 to top of gtest.h
#deifne _VARIADIC_MAX 10
It didnt work either. Also I got compilation warning saying "_VARIADIC_MAX' :
macro redefinition"
How to fix this issue? Where exactly i need to add a preprocessor define
_VARIADIC_MAX=10 and how?
Original comment by vaidehi....@gmail.com
on 27 Sep 2012 at 6:50
You have to do it before the gtest cmake files is processed. For me I use
add_directory(gtest) in my cmake file (with gtest being a sub directory where
gtest is), so I do it just before that and it works fine.
Original comment by mjklaim@gmail.com
on 27 Sep 2012 at 8:03
I tried adding it before this line in CMakeList file.
include(cmake/hermetic_build.cmake OPTIONAL)
I also tried adding it before
include(cmake/internal_utils.cmake)
But still same issue. Please look into the attached CMakeList file and let me
know where exactly i can place this code.
if( MSVC ) # VS2012 doesn't support correctly the tuples yet
add_definitions( /D _VARIADIC_MAX=10 )
endif()
My gtest code is under src\gtest . There is no sub folder gtest(like
src\gtest\gtest)
Original comment by vaidehi....@gmail.com
on 27 Sep 2012 at 8:40
Attachments:
I have also tried removing this code from CMakeLists.
if (NOT MSVC OR NOT MSVC_VERSION EQUAL 1600)
# The C++ Standard specifies tuple_element<int, class>.
# Yet MSVC 10's <utility> declares tuple_element<size_t, class>.
# That declaration conflicts with our own standard-conforming
# tuple implementation. Therefore using our own tuple with
# MSVC 10 doesn't compile.
cxx_library(gtest_main_use_own_tuple "${cxx_use_own_tuple}"
src/gtest-all.cc src/gtest_main.cc)
cxx_test_with_flags(gtest-tuple_test "${cxx_use_own_tuple}"
gtest_main_use_own_tuple test/gtest-tuple_test.cc)
cxx_test_with_flags(gtest_use_own_tuple_test "${cxx_use_own_tuple}"
gtest_main_use_own_tuple
test/gtest-param-test_test.cc test/gtest-param-test2_test.cc)
endif()
Still facing compilation issue. Please let me know where i am going wrong.
Original comment by vaidehi....@gmail.com
on 28 Sep 2012 at 2:49
Also i cannot compile GTest with VisualStudio 2012 on Windows 8 Pro...
Original comment by kosmonaFFFt@gmail.com
on 1 Feb 2013 at 4:30
same here.
since when variadic templates are supported in VS12?
is it part of CTP2? cause they weren't working before anyway anyhow.
so this makes officially support for WIN non-existing since MS finally support
the feature?
anywork around?
Original comment by pip...@gmail.com
on 13 Mar 2013 at 10:30
or you can go to Project->properties->c/c++->commandline, and add /D
_VARIADIC_MAX=10 to [Additional options]
Original comment by wangziju...@gmail.com
on 4 Jun 2013 at 2:21
Issue 437 has been merged into this issue.
Original comment by vladlosev
on 19 Jul 2013 at 8:06
Hi All,
I am planning to have a single test runner for cross platform. I got to know
google test has compatibility issues with Windows 8. However am using VS2012
Pro and Windows 8 Pro. could you please update the form if the issue is
resolved?
Original comment by luckyroc...@gmail.com
on 16 Aug 2013 at 5:01
[deleted comment]
Can any of the developers enlighten me as to why this SIMPLE fix did not make
it into release 1.7.0? This is a serious issue, a showstopper for any windows
plattform.
What version of Google Test are you using? On what operating system?
Google Test 1.6.0 OR Google Test 1.7.0 (both are affected)
Microsoft Visual Studio Professional 2012
Version 11.0.60610.01 Update 3
Microsoft .NET Framework
Version 4.5.50709
Installed Version: Professional
For anyone still asking how to fix this:
- Open CMakeLists.txt located at /gtest-1.7.0/CMakeLists.txt
- Append the following three lines to the file (appending means: scroll to the end, make a new, empty line and paste):
if( MSVC ) # VS2012 does not support tuples correctly yet
add_definitions( /D _VARIADIC_MAX=10 )
endif()
- Save and rerun CMake. Done.
Original comment by ThEBliZZ...@gmail.com
on 20 Sep 2013 at 4:34
For what it's worth, the fix ("if (MSVC) add_definitions( /D _VARIADIC_MAX=10 )
endif()") works for me with GTest 1.7.0 if I add the code snippet at the very
end of the CMakeLists.txt file, as suggested in another comment. It did not
work if I added the code at the beginning of the file. So the position is
important. In my case, I simply compiled the GTest solution file produced by
CMake; in other words, I'm compiling GTest in isolation, and not as part of a
separate project.
Original comment by virid...@gmail.com
on 29 Nov 2013 at 8:30
[deleted comment]
Fixed in r675.
Original comment by ko...@google.com
on 13 Jan 2014 at 10:53
It should be noted that the fix described in this thread does not work for
anyone not using CMake (trying to open the solution in the IDE).
To apply this fix in the project files:
1) Open gtest.sln (convert when prompted)
2) Open each individual project properties (Solution Explorer -> right-click ->
properties)...There are 4 projects total (gtest, gtest_main, gtest_prod_test,
gtest_unittest)
3) Add ;_VARIADIC_MAX=10 to the end of the Preprocessor Definitions
(Configureation Properties -> C/C++ -> Preprocessor) for each of the projects
mentioned in step 2.
4) Rebuild solution.
There are still a few warnings spit out by the compiler but at least it builds.
Original comment by kinar...@gmail.com
on 18 Mar 2014 at 6:08
I've just checkout a few seconds ago and it does not compile on Visual Studio
2012.
Original comment by demelier...@gmail.com
on 3 Oct 2014 at 6:33
Original issue reported on code.google.com by
michaelf...@gmail.com
on 4 Jun 2012 at 11:45