Можно ли как-нибудь построить новый объект из данного объекта, если параметры шаблона обоих объектов идентичны во время выполнения? Например:
У меня есть шаблон класса с объявлением:
template<typename _Type1, typename _Type2> class Object;
Далее у меня есть два экземпляра шаблона:
template class Object<char, int>;
template class Object<wchar_t, wint_t>;
Теперь я хочу написать функцию-член, такую как:
template<typename _Type1, typename _Type2>
Object<char, int> Object<_Type1, _Type2>::toCharObject() {
if(__gnu_cxx::__are_same<_Type1, char>::__value)
return *this;
else {
//Perform some kind of conversion and return an Object<char, int>
}
}
Я попробовал несколько методов, таких как использование __gnu_cxx::__enable_if<__gnu_cxx::__are_same<_Type1, char>::__value, _Type1>::__type
в конструкторе копирования для класса Oject
, но я продолжаю сталкиваться с ошибкой:
error: conversion from ‘Object<wchar_t, wint_t>’ to non-scalar type ‘Object<char, int>’ requested
Нет ли способа, которым я могу это сделать? Любая помощь будет принята с благодарностью!