черта std :: common_type для пользовательских типов

Начиная с C ++ 11 черта типаstd::common_type был представлен.std::common_type определяет общий тип между всеми аргументами шаблона. В C ++ 14 его вспомогательный типstd::common_type_t был также введен для того, чтобы сделать код, который используетstd::common_type тип черта короче.

std::common_type особенно полезно в перегруженных арифметических операторах, например,

template<typename T1, typename T2>
std::common_type_t<T1, T2> operator+(T1 const &t1, T2 const &t2) {
  return t1 + t2;
}

Он отлично работает, если аргументы его шаблонов встроены в типы (например,int, double). Тем не менее, мне кажется, что я не работаю, если я предоставляю в качестве аргументов шаблона пользовательские типы, например,

struct A {};
struct B {};

std::common_type_t<A, B> // doesn't work

Q: Как я могу сделатьstd::common_type черта работать с пользовательскими типами?

Ответы на вопрос(1)

Ваш ответ на вопрос