Баг компилятора - ошибка приведения к сложному типу

Ошибка приведения к типу, содержащему динамические объекты.  Добавление каких-либо конструкторов не помогает.  Если убрать string, то всё компилируется нормально.

struct A
{ 
  int a;
  string str;
};

struct B : A { };

void f()
{
  B b;
  (A)b; // '(' - invalid cast operation
}
указатели должны каститься нормально
TheXpert:
указатели должны каститься нормально

Если б они ещё были у структур...

странно что для них вообще наследование работает )

структуры щас это какое-то сборище несуразиц

Alexey Navoykov:

Ошибка приведения к типу, содержащему динамические объекты.  Добавление каких-либо конструкторов не помогает.  Если убрать string, то всё компилируется нормально.

Какая-то особая принципиальная позиция, что должны быть структуры, но не классы? Какая-то конкретная задача, требующая решения, или просто делать нечего?

TheXpert:
указатели должны каститься нормально

Очень зыкспертно! 

Dmitry Fedoseev:

Какая-то особая принципиальная позиция, что должны быть структуры, но не классы? Какая-то конкретная задача, требующая решения

Да
Alexey Navoykov:
Да

Значит продолжайте упираться в стену. Очень продуктивный подход.

Dmitry Fedoseev:

Значит продолжайте упираться в стену. Очень продуктивный подход.

Вы о чём?
Alexey Navoykov:
Вы о чём?

А про кастинг указателей вопросов не возникло?

Dmitry Fedoseev:

А про кастинг указателей вопросов не возникло?

Были бы указатели, не возникло бы