C++ 使用别名的函数

C++ 使用别名的函数,c++,c++11,using,C++,C++11,Using,下面的代码具体声明了什么 using f1 = void(int); 我知道以下几点 using f2 = void(*)(int); using f3 = void(&)(int); f2是指向函数的指针,f3将作为参考。它声明f1为函数类型,带有int参数且无返回类型 这相当于旧的学校宣言 typedef void f(int); 这是怎么一回事? 这是一种函数类型。声明函数时,例如: void func(int); 它的类型既不是指针也不是引用。上述函数的类型为void(i

下面的代码具体声明了什么

using f1 = void(int);
我知道以下几点

using f2 = void(*)(int);
using f3 = void(&)(int);

f2
是指向函数的指针,
f3
将作为参考。

它声明
f1
为函数类型,带有
int
参数且无返回类型

这相当于旧的学校宣言

typedef void f(int);
这是怎么一回事? 这是一种函数类型。声明函数时,例如:

void func(int);
它的类型既不是指针也不是引用。上述函数的类型为
void(int)

我们可以使用以下类型特征来“证明”它:

void func(int) {}

int main() {
    std::cout << std::is_same<decltype(func), void(int)>::value << '\n';
    std::cout << std::is_same<decltype(func), void(*)(int)>::value << '\n';
    std::cout << std::is_same<decltype(func), void(&)(int)>::value << '\n';
}

f1是函数本身。(f1、f2和f3都是类型,因此正确地说“f1是函数的一种类型”)。我发现与
decltype
相关的代码片段特别有用。
std::function<void(int)> fn;