दूसरों ने समाधान का उपयोग करने का उल्लेख किया है std::is_same
और decltype
।
अब फ़ंक्शन हस्ताक्षर की एक मनमानी संख्या के लिए तुलना को सामान्य करने के लिए, आप निम्न कार्य कर सकते हैं
#include <type_traits> // std::is_same, std::conjunction_v
template<typename Func, typename... Funcs>
constexpr bool areSameFunctions = std::conjunction_v<std::is_same<Func, Funcs>...>;
और एक जैसे कई कार्यों की तुलना करें
areSameFunctions<decltype(funA), decltype(funB), decltype(funC)>
( लाइव डेमो देखें )
या कम टाइपिंग के लिए (अर्थात बिना decltype
), इसे फंक्शन के रूप में बनाएं
template<typename Func, typename... Funcs>
constexpr bool areSameFunctions(Func&&, Funcs&&...)
{
return std::conjunction_v<std::is_same<Func, Funcs>...>;
}
और बस फोन करके
areSameFunctions(funA, funB, funC)
( लाइव डेमो देखें )