不允許使用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