gpt4 book ai didi

c++ - 成员函数上的 std::is_function?

转载 作者:太空狗 更新时间:2023-10-29 20:10:50 26 4
gpt4 key购买 nike

我可以执行以下操作来检测某物是否是一个函数:

void f()
{
}

int main()
{
std :: cout << std :: is_function <decltype(f)> :: value << std :: endl; // true
}

现在,如果我想做同样的事情,但使用的函数是类的方法,会发生什么情况?

我天真地尝试做类似的事情

class myclass
{
public:
void f()
{
}
};

int main()
{
std :: cout << std :: is_function <decltype(myclass :: f)> :: value << std :: endl;
}

但是我明白了

Call to non-static member function without an object argument

我该怎么办?我想要类似上面的东西......好吧,只打印 true

最佳答案

成员函数指针不同于普通的函数指针。此外,如果没有 &myclass::f 格式错误。对于成员函数,存在 std::is_member_function_pointer .

#include <iostream>
#include <type_traits>

class myclass
{
public:
void f() {}
};

int main()
{
std::cout << std::is_member_function_pointer<decltype(&myclass::f)>::value << std::endl;
}

Live on ideone

关于c++ - 成员函数上的 std::is_function?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36603003/

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