如何开始使用Visual Studio 2010的tr1功能?对于更具体的情况,我需要std::tr1::function。我尝试包括报告为丢失的#include <tr1/functional>,而#include <functional>包括罚款,但是当我设置此项时:

std::tr1::function<void(void)> callback;

我得到:
1>d:\marmalade\projects\core\src\button.h(21): error C3083: 'tr1': the symbol to the left of a '::' must be a type
1>d:\marmalade\projects\core\src\button.h(21): error C2039: 'function' : is not a member of '_STL'
1>d:\marmalade\projects\core\src\button.h(21): error C2143: syntax error : missing ';' before '<'
1>d:\marmalade\projects\core\src\button.h(21): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:\marmalade\projects\core\src\button.h(21): error C2238: unexpected token(s) preceding ';'

如果我使用boost,它可以正常工作,但是对于这个项目,由于使用特定的框架,我需要Visual Studio tr1版本。

如建议的那样,跳过tr1仍然返回相同的结果:
std::function<void(void)> callback;

1>d:\marmalade\projects\core\src\button.h(20): error C2039: 'function' : is not a member of '_STL'
1>d:\marmalade\projects\core\src\button.h(20): error C2143: syntax error : missing ';' before '<'
1>d:\marmalade\projects\core\src\button.h(20): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:\marmalade\projects\core\src\button.h(20): error C2238: unexpected token(s) preceding ';'

最佳答案

根据您的评论和this page,我认为Marmalade附带了它自己的STL实现,这似乎已经过时了。 This page验证他们使用的是STLPort版本,该版本不支持2005年发布的TR1,更不用说更新的版本了。您的选择是:

1)自己复制/写那些
2)不要
3)Download a newer version of STLPort。它似乎没有在最近两年中进行更新,所以也没有C++ 11,但是他们确实提到了functional,但是不清楚它是否在stdstd::tr1命名空间中。但是,这可能无法与果酱一起使用,因此请进行备份并当心。

关于c++ - 如何在Visual Studio 2010中使用tr1(tr1::function)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10402924/

10-12 13:38