我有這樣的代碼:的Visual Studio 2010和std ::功能
#include <iostream>
#include <functional>
struct A
{
int operator()(int i) const {
std::cout << "F: " << i << std::endl;
return i + 1;
}
};
int main()
{
A a;
std::tr1::function<int(int)> f = std::tr1::ref(a);
std::cout << f(6) << std::endl;
}
目的是通過一個的reference_wrapper傳遞仿函數對象,在某種程度上避免無用的副本costructor電話。 我期待以下的輸出:
F: 6
7
它與GCC> = 4.4.0,Visual Studio 2008和通過與升壓替代的std :: TR1空間boost正常工作。它只適用於新的Visual Studio 2010 Express Beta 2和Release Candidate。
這個新的C++功能在vs2010中有bug嗎? 或者在代碼中存在一些錯誤或誤用?
它不起作用? – UncleBens 2010-03-11 13:42:40
@litb:我認爲OP在VS2010中使用'std :: tr1 :: ref'模板類和* not * boost存在問題。 – dirkgently 2010-03-11 13:47:44
這裏是VS2010的構建輸出: http://pastebin.com/YQf4Qe8W – 2010-03-11 13:47:57