Другие упоминали решение с использованием 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)>
( Смотрите Live Demo )
Или для меньшего набора текста (т.е. без decltype
), сделайте это как функцию
template<typename Func, typename... Funcs>
constexpr bool areSameFunctions(Func&&, Funcs&&...)
{
return std::conjunction_v<std::is_same<Func, Funcs>...>;
}
и позвонить просто
areSameFunctions(funA, funB, funC)
( Смотрите Live Demo )