c++ - 如何比较两个函数的签名?

标签 c++ function c++17 c++-standard-library function-signature

有没有办法检查两个函数是否具有相同的签名?例如:

int funA (int a, int b);
int funB (int a, int b);
float funC (int a, int b);
int funD (float a, int b);

在此示例中,funAfunB 是唯一应返回 true 的函数组合。

最佳答案

本质上你想检查两个函数的类型是否相同:

std::is_same_v<decltype(funA), decltype(funB)>

我不会将此称为“比较签名”,因为如果我没记错的话,返回类型不是签名的一部分(因为它不会影响重载解析)。

关于c++ - 如何比较两个函数的签名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59102359/

相关文章:

c++ - std::in_place_t 和 C++17 中的 friend

c++ - sizeof(*this) 和结构继承

c++ - 对 `_imp__glewInit@0' 的 undefined reference

c++ - 将函数指针成员模板限制为仅派生类

function - PostgreSQL 函数,需要获取函数内部的变量

c++ - 使用 using 定义的类型不能用作函数参数

c++ - 如何调用非常量运算符?

c++ - 列出在 Linux 上使用 C/C++ 执行的程序中的共享库

sql - 编写一个 PL/pgSQL 函数,以便在找到 "nothing"时不设置 FOUND?

c++ - C++14 和 C++17 使用 : `*p++ = *p` 的区别