c ++错误std :: result_of没有命名类型

use*_*572 6 c++ gcc g++ result-of c++11

g++ -std=c++0x'ing之后std::result_of产生以下错误消息

error: ‘result_of’ in namespace ‘std’ does not name a type
Run Code Online (Sandbox Code Playgroud)

(SUSE上的g ++版本4.5.0.)

足以重现错误的相关代码段如下

#include <random>
#include <type_traits>

using namespace std;

class Rnd{
protected:
  static default_random_engine generator_;
};

template<class distribution>
class Distr: Rnd{
  distribution distribution_;
public:
  typename std::result_of<distribution(default_random_engine)>::type 
       operator() (){ return distribution_(default_random_engine); }
};
Run Code Online (Sandbox Code Playgroud)

此外,我试图从维基百科或cpluplus.com编译示例无济于事.这是特定编译器的问题还是我做错了什么?

ken*_*ytm 7

尽量包括<functional>.gcc 4.5基于旧版本的C++ 11,其中std::result_of定义了<functional>而不是<type_traits>.

此举是在确定问题1270后于3030年(2010年3月29日)推出的.gcc 4.5.0在变更后的16天 (2010年4月14日)发布,没有足够的时间申请,我们可以从这个在线源代码中看到.<functional>

std::result_of被移到<type_traits>gcc 4.6.