C++中的using,除了常规的命名空间意外,还有以下用处:
用作类型别名,类似类型定义:
语法
using identifier = type_name;
的例子
using flags = std::ios_base::fmtflags;
using func = void (*) (int,int);
// typedef std::ios_base::fmtflags flags;
// typedef void (*func)(int, int);
template<class T> using ptr = T*;
ptr<int> x;
template<class T> using vec = std::vector<T>;
vec<float> w;
// type alias used to hide some template parameter
template<class CharT> using mystring = std::basic_string<CharT,std::char_traits<CharT>>;
mystring<char> str;
// type alias used to simplify the syntax of std::enable_if
template< class Condition >
using EnableIf = Invoke<std::enable_if<Condition::value>>;
template <typename T, typename = EnableIf<std::is_polymorphic<T>>>
int f(T t);