Это приложение ответа в этой теме. -types/22390396#22390396">Как вернуть самый большой тип в списке типов?
где шаблон позволяет определить тип, который является максимальным из двух объектов.
Я как-то теряю метод int по виду сообщения об ошибке компилятора.
Вот код:
#include <iostream>
template<typename A>
struct givenType {
typedef A type;
};
template<typename A, typename B>
struct largestType {
typedef typename givenType<std::conditional<sizeof(A) <= sizeof(B), B, A >>::type type;
};
template<typename T1, typename T2>
class Alpha {
public:
typedef typename largestType<T1,T2>::type bigT3;
Alpha() {};
bigT3 answer(void) {
bigT3 t;
return t;
}
void tryCout(void) {
std::cout << answer() << std::endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
Alpha<int,int> a;
a.tryCout();
return 0;
}
вместе со следующей ошибкой:
ошибка C2679: двоичный '‹‹': не найден оператор, который принимает правый операнд типа 'std::conditional‹_Test,_Ty1,_Ty2>' (или нет приемлемого преобразования) с
[
_Test=true,
_Ty1=int,
_Ty2=int
]
Спасибо.