根據 CPP 參考,std::is_function可以按如下方式實作。有人可以解釋為什么這有效,因為它似乎不直接解決可呼叫物件?
template<class T>
struct is_function : std::integral_constant<
bool,
!std::is_const<const T>::value && !std::is_reference<T>::value
> {};
uj5u.com熱心網友回復:
它利用了https://eel.is/c draft/basic.type.qualifier#1中的這句話
函式或參考型別始終是 cv-unqualified。
因此,給定一個 type T,它會嘗試生成一個const T. 如果結果不是const 限定型別,則 T 必須是函式或參考型別。然后它消除了參考型別,并完成了。
(不要與最后具有的成員函式混淆const:即,在標準中,“具有 cv-qualifier-seq 的函式型別”,與“cv-qualified function type”不同)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/472202.html
