類別是模板特化嗎?
在 C 中,確定給定類型是否是特定類型的特化可能很有用類別模板。例如,考慮以下程式碼:
template<class t> struct A {}; template<class comparet> void compare() { // is this A? cout , CompareT >::value ???? }</class></class>
給定上述程式碼,我們如何驗證CompareT 是否為A對於某些類型*?
解:
利用is_specialization 模板元函數,您可以檢查類型是否為類別模板的特化。以下是範例:
template<class t template> class Template> struct is_specialization : std::false_type {}; template<template> class Template, class... Args> struct is_specialization<template>, Template> : std::true_type {}; static_assert(is_specialization<:vector>, std::vector>{}, ""); static_assert(!is_specialization<:vector>, std::list>{}, "");</:vector></:vector></template></template></class>
在上面的範例中,is_specialization 採用兩個參數:T 和 Template。如果T是Template的特化,則is_specialization<T,Template>;是 std::true_type。否則,它是 std::false_type。
以上是類別是 C 中的模板特化嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!