首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

[原创&交流]现在才知道TR1的异常在VC9的SP1中解决

2012-04-11 
[原创&交流]现在才知道TR1的错误在VC9的SP1中解决链接: 现在才知道TR1的错误在VC9的SP1中解决习惯了用boos

[原创&交流]现在才知道TR1的错误在VC9的SP1中解决
链接: 现在才知道TR1的错误在VC9的SP1中解决

  习惯了用boost库的function,今天使用VS2005+sp1编译一个程序,用到了std::function,结果出现了:error C2039: "function": 不是"std"的成员的错误,但是我已经#include <functional>了啊!


  上网搜了搜,初步判断是VS 2005并不支持std::function。于是安装了VS 2008,再次编译,还是出现编译错误:"function": 不是"std"的

成员。将std::function改为 std::tr1::function也不行。

  再次上网搜索,才发现TR1的错误在VC9的SP1中解决。请参考:
TR1 Fixes In VC9 SP1

  作者还这样说:tr1::function can now store function objects with non-const function call operators. (This was a severe problem.)


  VS 2005就已经能支持boost::function了,可见微软的STL不是一般的水,看来改天要试试STLport。另外在网上 std::function貌似用得 还不如boost::function多。

[解决办法]
这还是C++0x的问题,function函数归到std下面也就是标准库了,这是C++0x的标准,VS8和VS9不支持0x,也就随意增加标准库,VC9 sp1的下一代就是VS2010,全面支持0x,sp1算个预览,这也就是VS2008 sp1补丁特别大的原因,增加了不少VS2010的东西。

function仅仅是个库函数,用标准C++实现的,你愿意的话自己都可以往std空间里加东西。VC能支持的库多了去了,难道说只要能支持的就加进标准库么?

热点排行