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?