曹耘豪的博客

C++ using 的3种使用

可读性:

1
2
3
4
5
6
7
8
9
// 1
typedef void (*FP) (int, const std::string&);

using FP = void (*) (int, const std::string&);

// 2
typedef std::string (Foo::* fooMemFnPtr) (const std::string&);

using fooMemFnPtr = std::string (Foo::*) (const std::string&);

模板别名:

1
2
3
4
5
6
7
8
9
10
11
12
13
// 正确
template <typename T>
using Vec = MyVector<T, MyAlloc<T>>;

// usage
Vec<int> vec;

// 错误:error: a typedef cannot be a template
template <typename T>
typedef MyVector<T, MyAlloc<T>> Vec;

// usage
Vec<int> vec;
   /