型別名
-
當後跟一個限定名稱時,
typename指定它是一個型別的名稱。這通常在模板中是必需的,特別是當巢狀名稱說明符是除當前例項化之外的依賴型別時。在此示例中,std::decay<T>取決於模板引數T,因此為了命名巢狀型別type,我們需要使用typename為整個限定名稱新增字首。有關更多詳細資訊,請參閱 模板和typename關鍵字的位置和原因?template <class T> auto decay_copy(T&& r) -> typename std::decay<T>::type; -
在模板的宣告中引入型別引數。在這種情況下,它可以與
class互換。template <typename T> const T& min(const T& x, const T& y) { return b < a ? b : a; }
Version >= C++ 17
-
typename也可以在宣告引數名稱前面的模板模板引數時使用,就像class一樣。template <template <class T> typename U> void f() { U<int>::do_it(); U<double>::do_it(); }