c++ - 如何验证类方法签名?
问题描述
我可以按如下方式验证函数签名:
template <typename>
struct FnType
{
static bool const valid = false;
};
struct FnType<void(int)>
{
static bool const valid = true;
};
void foo(int)
{
}
FnType<decltype(foo)>::valid; //true
如何验证类方法签名?
class Y
{
public:
void foo(int)
{
}
};
FnType<decltype(&Y::foo)>::valid; //false??
我想验证Y::foo
返回类型和参数类型是否有效。
解决方案
您可以为成员函数指针添加另一个部分特化。例如
template <typename T>
struct FnType<void(T::*)(int)>
{
static bool const valid = true;
};
然后
FnType<decltype(&Y::foo)>::valid; //true
推荐阅读
- php - 我可以在 React JS 的联系表单中使用 action='POST' 到 PHP 吗?
- python - 当另一列更改值时尝试重置列
- laravel - 为什么控制器中的受保护方法可以作为路由处理程序调用
- python - 如何在 pandas/matplotlib 时间序列图中的线条之间填充
- xcode - 如何在 Xcode 11 上使用 OSX 10.14 SDK?
- asp.net-core - Asp.net Core 上传文件不会触发 OnPost 代码
- django - Django 2.2 i18n urlpatterns 没有被翻译
- javascript - 如何修复我的石头纸蜥蜴 spock 程序的 if 语句?
- python - 我无法运行 tf_upgrade_v2 迁移到 tensorflow 2
- javascript - 在 MySQL 的 javascript 中格式化日期时遇到问题