不允许使用C++ 11或Boost。无法使用std :: ptr_fun和带参考的函数
我想获得下面的代码来编译,但我有问题。 std::ptr_fun
似乎不喜欢参考。
#include <algorithm>
#include <functional>
#include <vector>
struct Something
{
};
template<class T>
T Function(const T& x, int s)
{
// blah blah
return x;
}
int main()
{
std::vector<Something> data(20);
std::transform(data.begin(), data.end(), data.begin(), std::bind2nd(std::ptr_fun(Function<Something>), 8));
}
VS2013错误消息: 错误C2535: '某物的std :: binder2nd> ::运算符()(常量东西&)常量':已经定义或声明
但是,如果我改变成员函数参数Function
到T x
它的工作原理!
有没有办法让这个工作方便而不需要修改Function
?
活生生的实例:
VS2013支持C++ 11库的很大一部分,所以尽管你限制你可以访问'STD: :绑定“和”标准::占位符“ – Mgetz 2014-12-03 18:50:13