VS2008 SP1文档讨论了std::tr1::mem_fun
.
那么为什么,当我尝试使用时std::tr1::mem_fun
,为什么会出现这个编译错误?:
'mem_fun' : is not a member of 'std::tr1'
同时,我可以std::tr1::function
毫无问题地使用。
这是我试图编译的示例代码,它应该通过 a调用TakesInt
的实例:Test
function<void (int)>
#include "stdafx.h"
#include <iostream>
#include <functional>
#include <memory>
struct Test { void TakesInt(int i) { std::cout << i; } };
void _tmain()
{
Test* t = new Test();
//error C2039: 'mem_fun' : is not a member of 'std::tr1'
std::tr1::function<void (int)> f =
std::tr1::bind(std::tr1::mem_fun(&Test::TakesInt), t);
f(2);
}
我正在尝试使用 tr1 版本mem_fun
,因为使用std::mem_fun
我的代码时也无法编译!我无法从编译器错误中判断问题出在我的代码上,还是可以通过使用 tr1's 来解决mem_fun
。那是你的 C++ 编译器错误(或者可能只是我!)。
更新:对。答案是正确拼写为 mem_fn!
但是,当我修复它时,代码仍然无法编译。
这是编译器错误:
error C2562:
'std::tr1::_Callable_obj<_Ty,_Indirect>::_ApplyX' :
'void' function returning a value