using关键字有两个主要用途:
        1.类型别名:使用using可以为类型创建新的名称,这在模板编程中尤其有用。
using integer = int;
integer a = 5; // 这里的integer就是int类型
        2.命名空间:using可以用来引入命名空间中的名字,或者是整个命名空间。
using namespace std; // 引入std命名空间
using std::cout; // 引入std命名空间中的cout名字
typename关键字主要用在模板编程中,用来表明一个名字是一个类型。这在处理模板参数时尤其重要。
template <class T>
class MyClass {typename T::SubType * ptr; // 这里typename用来表明T::SubType是一个类型
};
在这个例子中,typename用来指示T::SubType是一个类型。如果没有typename,编译器可能会误认为SubType是一个静态成员。
另外 模板中的模板类也可以使用typename,此时和class等价
template <class T, typename T2> // 这里typename用来表明T是一个类型,与前面的class等价
class MyClass {T:* ptr; 
};