2017-04-13 84 views

回答

2

從頁面的其他相關行,你掛的是:

template<class> struct is_ref_wrapper : std::false_type {}; 

這定義了通用模板。下一行是專業化。

template<class T> struct is_ref_wrapper<std::reference_wrapper<T>> : std::true_type {}; 

is_ref_wrapperstd::reference_wrapper<T>作爲模板參數實例化,則使用專門化。

2

即線變爲串聯與它上面的一個:

template<class> struct is_ref_wrapper : std::false_type {}; 
template<class T> struct is_ref_wrapper<std::reference_wrapper<T>> : std::true_type {}; 

第一行聲明的(主)模板is_ref_wrapper。第二行聲明瞭一個專業化,當且僅當參數匹配std::reference_wrapper<T>的某些T時,纔會選擇專業化,而不是主要模板。這正是所需的行爲。