Предположим, у меня в C ++ следующий шаблон:
class A {};
class B : public A {};
class C : public A {};
Это, очевидно, должно работать (приведение типов к родителю):
A a;
B b;
a = static_cast<A>(b);
a = static_cast<A>(c);
Они должны работать во время компиляции, но могут вызвать проблемы во время выполнения:
b = static_cast<B>(a);
c = static_cast<C>(a);
Могу ли я предположить, что это никогда не пройдет проверку компиляции (при условии, что не существует конструктора, который преобразует один класс в другой)?
b = static_cast<B>(c);
c = static_cast<C>(b);