提问人:mouse_00 提问时间:6/30/2023 最后编辑:JeJomouse_00 更新时间:6/30/2023 访问量:106
如何获取类方法的返回类型?
How to get return type of class method?
问:
我尝试使用,但无法管理它。std::result_of
#include <type_traits>
class Foo
{
public:
int foo();
};
int main()
{
using return_type = std::result_of_t<Foo::foo()>; // error
return 0;
}
那么如何获取返回类型呢?Foo::foo
答:
0赞
273K
6/30/2023
#1
Foo::foo()
不是类型,需要函数类型。std::result_of
#include <type_traits>
class Foo
{
public:
int foo();
};
int main() {
using return_type = std::result_of<decltype(&Foo::foo)>;
return 0;
}
3赞
JeJo
6/30/2023
#2
如何获取 的返回类型?
Foo::foo
您可以按如下方式使用 std::invoke_result
。
#include <type_traits> // std::invoke_result_t
using return_type = std::invoke_result_t<decltype(&Foo::foo), Foo>;
或使用 std::d eclval
#include <utility> // std::declval
using return_type = decltype(std::declval<Foo>().foo());
旁注:在 c++17 中已弃用,在 c++20 中删除。因此,将来升级到 C++20 时,您的代码库必须更新/更改,以防您使用它。阅读更多:std::result_of_t
评论