8

如何开始使用 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 ';'
4

2 回答 2

8

根据您的评论,在这个页面上,我认为 Marmalade 带有它自己的 STL 实现,这似乎已经过时了。 此页面验证他们使用的STLPort版本不支持 2005 年推出的 TR1,更不用说任何更新的版本了。您的选择是:

1)自己复制/写那些
2)不要
3)下载更新版本的 STLPort。它似乎在过去两年没有更新,所以没有 C++11,但他们确实提到了有functional,但不清楚它是否在stdorstd::tr1命名空间中。但是,这可能不适用于果酱,因此请做好备份并小心。

于 2012-05-01T19:57:06.560 回答
2

Visual Studio 2010 附带默认启用的 C++11(或至少是已实现的)。你需要使用std::function<void(void)>.

如需完整的表格,请参见此处

顺便说一句:现在你不应该使用 TR1 中的任何东西。它已被集成到新标准中。

于 2012-05-01T19:18:48.593 回答