隨着類型別名我們可以例如引入新類型別名使用類型別名,如使用A = INT(INT)
using A = int(*)(int);
類似於
typedef int(*A)(int);
我找到以下碼也合法的當前C++編譯器
using A = int(int);
我想知道A是什麼類型以及如何使用它(我沒有發現它有用m yself)
下面的代碼,它工作在GCC 6.3和4.0鐺
#include <iostream>
#include <functional>
#include <typeinfo>
#include <cxxabi.h>
using namespace std;
using A = int(int);
using B = int(*)(int);
int main(){
int status;
cout<<sizeof(A)<<endl; //Error in clang 4.0
cout<<sizeof(B)<<endl;
cout<<sizeof(function<int(int)>)<<endl;
cout<<typeid(A).name()<<endl;
cout<<typeid(B).name()<<endl;
cout<<typeid(function<int(int)>).name()<<endl;
cout<<abi::__cxa_demangle(typeid(A).name(), 0, 0, &status)<<endl;
cout<<abi::__cxa_demangle(typeid(B).name(), 0, 0, &status)<<endl;
cout<<abi::__cxa_demangle(typeid(function<int(int)>).name(), 0, 0, &status)<<endl;
return 0;
}
輸出是
1
4
16
FiiE
PFiiE
St8functionIFiiEE
int (int)
int (*)(int)
std::function<int (int)>