如何开始使用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 ';'
答案 0 :(得分:8)
根据您的评论以及this page,我认为Marmalade附带了自己的STL实现,这似乎已经过时了。 This page验证他们使用STLPort的版本,该版本不支持2005年推出的TR1,更不用说新版本了。您的选择是:
1)自己复制/写下这些
2)没有
3)Download a newer version of STLPort。它似乎在过去两年没有更新,所以没有C ++ 11,但他们确实提到了functional
,但不清楚它是否在std
或std::tr1
命名空间。但是,这可能不适用于Marmalade,因此请进行备份并小心。
答案 1 :(得分:2)
Visual Studio 2010默认启用C ++ 11(或至少实现了什么)。您需要使用std::function<void(void)>
。
要获得完整的表see here。
暂且不说:现在你不应该使用TR1中的任何东西。它已被纳入新标准。