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;