0
点赞
收藏
分享

微信扫一扫

元编程应用-判读一个类是不是含有foo方法

爱做梦的老巫婆 2022-12-01 阅读 56


#include <iostream>
#include <type_traits>
template <typename T, typename ...Args>
struct has_member_foo {
private:
template <typename U>
static auto Check(int) -> decltype(std::declval<U>().foo(std::declval<Args>()...), std::true_type());
template <typename U>
static std::false_type Check(...);
public:
enum { value = std::is_same<decltype(Check<T>(0)), std::true_type>::value };
};
struct Test {
void foo(int a, double b) {
}
void foo(int a) {
}
void foo() {
}
};
int main() {
std::cout << has_member_foo<Test, int, double>::value << std::endl;
std::cout << has_member_foo<Test, int>::value << std::endl;
std::cout << has_member_foo<Test>::value << std::endl;

return 0;
}

 

举报

相关推荐

0 条评论