googletest: googletest on Visual Studio 2012 RC on Windows 8 RC does not compile

I would like to request that the team supports Windows 8 RC.  I know that 
Windows 8 RC is not a release from Microsoft.  However, being able to support 
developers working on the Windows 8 platform would be really nice.  Currently, 
trying to even compile gtest on Windows 8 fails.  I detail the problems below.  

What steps will reproduce the problem?
1.  Loading the solution with Visual Studio 2012 RC on Windows 8 RC Build 8400 
will cause the solution to be converted to Visual Studio 2012 v110 code 
generation.
2.  Upon attempting to build gtest a number of compiler issues occur.  All of 
the errors occur in gtest-param-util-generated.h related to templates.  Visual 
Studio 2012 has an issue with the number of template arguments in 
std::tr1::tuple according to the compiler.

What is the expected output? What do you see instead?
The expected output is that the build is successful.  Instead, I get the 
following output:  

Note: Output has been modified slightly to hide some details unrelated to gtest:

1>\ext\gtest-1.5.0\include\gtest\internal\gtest-param-util-generated.h(4015): 
error C2977: 'std::tuple' : too many template arguments
1>          c:\program files (x86)\microsoft visual studio 
11.0\vc\include\utility(73) : see declaration of 'std::tuple'
1>          
\ext\gtest-1.5.0\include\gtest\internal\gtest-param-util-generated.h(4247) : 
see reference to class template instantiation 
'testing::internal::CartesianProductGenerator9<T1,T2,T3,T4,T5,T6,T7,T8,T9>' 
being compiled
1>c:\users\msfrucht\desktop\win8nfc\win8nfc\c3nfc\ext\gtest-1.5.0\include\gtest\
internal\gtest-param-util-generated.h(4015): error C3203: 'tuple' : 
unspecialized class template can't be used as a template argument for template 
parameter 'T', expected a real type
1>c:\users\msfrucht\desktop\win8nfc\win8nfc\c3nfc\ext\gtest-1.5.0\include\gtest\
internal\gtest-param-util-generated.h(4015): error C2955: 'std::tuple' : use of 
class template requires template argument list
1>          c:\program files (x86)\microsoft visual studio 
11.0\vc\include\utility(73) : see declaration of 'std::tuple'
1>\ext\gtest-1.5.0\include\gtest\internal\gtest-param-util-generated.h(4015): 
error C2955: 'testing::internal::ParamGeneratorInterface' : use of class 
template requires template argument list
1>          \ext\gtest-1.5.0\include\gtest\internal\gtest-param-util.h(141) : 
see declaration of 'testing::internal::ParamGeneratorInterface'
1>\gtest-1.5.0\include\gtest\internal\gtest-param-util-generated.h(4017): error 
C2977: 'std::tuple' : too many template arguments
1>          c:\program files (x86)\microsoft visual studio 
11.0\vc\include\utility(73) : see declaration of 'std::tuple'

What version of Google Test are you using? On what operating system?
I am using Google Test 1.5 on Windows 8 RC Build 8400 x64.

Original issue reported on code.google.com by michaelf...@gmail.com on 4 Jun 2012 at 11:45

About this issue

  • Original URL
  • State: closed
  • Created 9 years ago
  • Comments: 30 (26 by maintainers)

Most upvoted comments

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