#include <iostream>
using namespace std;
// 定义一个具体类型的别名, using 与 typedef 一样的效果
// 但是模板的别名只能用using(如果typedef也能的话,cpp11就不会加using这个特性了)
// 以下效果一样
using u_flags = std::ios_base::fmtflags;
typedef std::ios_base::fmtflags f_flags;
using u_func = void(*) (int, int); // 感觉using方式看上去更优雅
typedef void(*f_func) (int, int);
// using 特有
template<typename T>
struct Node { T val; };
template<typename T>
using u_Test = Node<T>; // ok
//template<typename T>
//typedef Node<T> f_Test; // error
// 因为 Node<T> 不是一个具体类型, 这样:
typedef Node<int> f_Test; // ok, 具体类型
// 模板别名
template<class T>
using ptr = T*;
int main()
{
u_Test<int> t1;
f_Test t2;
ptr<int> x;
int ntmp = 90;
x = &ntmp;
cout << *x << endl;
return 0;
}
c++11之模板别名(using)
最新推荐文章于 2023-11-19 21:48:10 发布