std :: tr1 with visual studio 2017

时间:2017-03-17 00:22:41

标签: c++ visual-c++ visual-studio-2017 c++17 tr1

我有一些使用某些版本的Google GTest框架的C ++代码。此代码用于使用Visual Studio 2015进行编译。我刚刚升级到VS2017,现在我收到一堆这样的错误:

ter

在VS2017中使用std :: tr1需要一些编译器选项吗?

2 个答案:

答案 0 :(得分:11)

一种选择是重新启用TR1;通过定义宏_HAS_TR1_NAMESPACE来完成此操作,如this blog article中简要提到的那样。如果您正在使用MSBuild项目,那么最好通过项目的Preprocessor Definitions设置来完成;或者,如果您正在使用预编译的标头,请在所述PCH的顶部定义它。

更好的选择是通过在包含任何GTest标头之前将宏GTEST_LANG_CXX11定义为1来通知GTest您的编译器支持C ++ 11;那么它将使用std::tuple而不是std::tr1::tuple *。 (GTest's C++11-detection logic面向__cplusplus,VC ++尚未更新,尽管主要是C ++ 11和C ++ 14兼容。我会说这是GTest中的一个错误,因为它支持VC ++其他地方配置逻辑。)

*更不用说其他C ++ 11的功能,这就是为什么这是目前为止更好的选择; - ]

答案 1 :(得分:0)

Googletest release 1.8.1解决了此问题(与VS2017 15.8.5结合使用)。