gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:28:18 27 4
gpt4 key购买 nike

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

error: ‘result_of’ in namespace ‘std’ does not name a type

(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); }
};

此外,我曾尝试从 wikipedia 或 cpluplus.com 编译示例,但无济于事。是特定编译器的问题还是我做错了什么?

最佳答案

尝试包含 <functional>还。 gcc 4.5 基于旧版本的 C++11,其中 std::result_of<functional> 中定义而不是 <type_traits> .

此举措是在 n3090 中引入的(2010 年 3 月 29 日)修复后 issue 1270 . gcc 4.5.0 在更改后仅 16 天发布 (2010 April 14) , 没有足够的时间申请,正如我们从 this online source code 中看到的那样的 <functional> .

std::result_of已移至 <type_traits>gcc 4.6 .

关于C++ 错误 std::result_of 没有命名类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12711354/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com