gpt4 book ai didi

c++ - 多态仿函数上的 std::result_of

转载 作者:行者123 更新时间:2023-11-28 05:53:22 28 4
gpt4 key购买 nike

我正在尝试在仿函数上使用 std::result_of。为什么我会得到这些结果?

#include <typeinfo>

struct my_logical_not {
template<typename A>
bool operator()(const A &value) const {
return !value;
}
};

struct my_passthrough {
template<typename A>
A operator()(A &value) const {
return value;
}
};

int main() {


// this prints 'b':
std::cout << typeid(typename std::result_of<my_logical_not(int)>::type).name() << std::endl;

// this does not compile:
// main.cpp:24:66: error: ‘type’ in ‘class std::result_of<my_passthrough(int)>’ does not name a type

std::cout << typeid(typename std::result_of<my_passthrough(int)>::type).name() << std::endl;

return 0;
}

最佳答案

正如 Piotr Skotnicki 在评论中指出的那样,一旦将 my_passthrough 更改为采用 const A& 而不是 A&,上面的代码就可以工作:

   struct my_passthrough {
template<typename A>
A operator()(const A &value) const {
return value;
}
};

关于c++ - 多态仿函数上的 std::result_of,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34727800/

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