首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >std::tr1和visual studio 2017

std::tr1和visual studio 2017
EN

Stack Overflow用户
提问于 2017-03-17 00:22:41
回答 2查看 6.1K关注 0票数 14

我有一些C++代码,它使用了谷歌的GTest框架的某些版本。此代码用于使用Visual 2015很好地编译。我刚刚升级到VS2017,现在我收到了很多这样的错误:

代码语言:javascript
复制
error C2039: 'tr1': is not a member of 'std'
error C3083: 'tr1': the symbol to the left of a '::' must be a type

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-17 00:27:53

一个选项是重新启用TR1;通过定义宏_HAS_TR1_NAMESPACE来实现这一点,就像这篇博客文章中简要提到的那样。如果您使用的是一个MSBuild项目,那么最好通过您的项目的预处理定义设置来完成;或者如果您使用的是一个预编译的头,通过在所述预处理定义的顶部定义它。

一个更好的选择是在包含任何GTest头之前通过将宏GTEST_LANG_CXX11定义为1来通知1编译器支持1;然后它将使用std::tuple而不是std::tr1::tuple*。(GTest的C++11-检测逻辑__cplusplus-oriented,尽管基本上符合C++11和C++14,但VC++仍未对其进行更新。我想说这是GTest中的一个bug,因为它在整个配置逻辑的其他地方支持VC++。)

*更别提其他C++11特性,这就是为什么这是更好的选择;

票数 16
EN

Stack Overflow用户

发布于 2018-09-22 15:25:09

Googletest 1.8.1版修复了这个问题(结合VS2017 15.8.5)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42847103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档