ऐसा कुछ।
template<typename... Ts>
using is_any_same_to_first = is_any_to_first< std::is_same, Ts... >;
और संपूर्णता के लिए, मूल is_all
है, जो हो सकता है: सबसे पहले, एक छोटे से metaprogramming पुस्तकालय, क्योंकि यह 2 लाइनों है जैसे कि यह सामान्य रूप से ऐसा करने के लिए कहते हैं: तो फिर is_any_same_to_first
के 2 लाइन कार्यान्वयन
template<template<typename,typename>class checker, typename... Ts>
struct is_any_to_first : std::false_type {};
template<template<typename,typename>class checker, typename T0, typename T1, typename... Ts>
struct is_any_to_first<checker, T0, T1, Ts...> :
std::integral_constant< bool, checker<T0, T1>::value || is_any_to_first<checker, T0, Ts...>::value>
{};
यह भी उपयोगी साबित:
template<template<typename,typename>class checker, typename... Ts>
struct is_all : std::true_type {};
template<template<typename,typename>class checker, typename T0, typename T1, typename... Ts>
struct is_all<checker, T0, T1, Ts...> :
std::integral_constant< bool, checker<T0, T1>::value && is_all<checker, T0, Ts...>::value>
{};
template<typename... Ts>
using is_all_same = is_all< std::is_same, Ts... >;
is_all_same
की Live example।
ध्यान दें कि is_any_same_to_first
पर कॉल करने से कुछ भी कम स्पष्ट हो रहा है। 2/3 लोग जिन्होंने मुझे इस प्रश्न का उत्तर देने का प्रयास किया, ने माना कि is_same<A,B,C>
सच है अगर सभी तीन एक ही प्रकार के हैं!
चूंकि आपका आशय नहीं था स्पष्ट (दो लोगों ने एक ही गलत व्याख्या की) मैंने आपके प्रश्न को थोड़ा सा जवाब देने की स्वतंत्रता ली। – syam