Информация об изменениях

Сообщение convert_cast? от 31.10.2016 21:01

Изменено 31.10.2016 21:32 turbocode

template<class InterfaceType>
class Convert
{
public:
   static DerivedType1<IDerivedType1> Cast(const BaseType<IBaseType>& base_type, void* fake_type = 0);
   static DerivedType2<IDerivedType2> Cast(const BaseType<IBaseType>& base_type, int* fake_type = 0);

private:
   Convert();
   ~Convert();
}

DerivedType1<IDerivedType1> result = Convert<IDerivedType1>::Cast(test, (void*)0);


Как заставить компилятор генерировать fake_type автоматически чтобы не возникало redifinition и чтобы вызов свести к виду:
DerivedType1<IDerivedType1> result = Convert<IDerivedType1>::Cast(test);


Или это невозможно?
convert_cast?
template<class InterfaceType>
class Convert
{
public:
   static DerivedType1<IDerivedType1> Cast(const BaseType<IBaseType>& base_type, void* fake_type = 0);
   static DerivedType2<IDerivedType2> Cast(const BaseType<IBaseType>& base_type, int* fake_type = 0);

private:
   Convert();
   ~Convert();
}

DerivedType1<IDerivedType1> result = Convert<IDerivedType1>::Cast(test, (void*)0);


Как заставить компилятор генерировать fake_type автоматически чтобы не возникало redifinition и чтобы вызов свести к виду:
DerivedType1<IDerivedType1> result = Convert<IDerivedType1>::Cast(test);


Или это невозможно в С++03?