путаница в динамическом_касте

Я отказываюсь от этого. ..

$ 5.2.7 / 2- "Если T - тип указателя, v должно быть r-значением указателя на полный тип класса, и результат r-значение типа T. Если T является ссылочный тип, v должно быть lvalue типа полного класса, а результат - это lvalue типа упоминается Т. "

В соответствии с вышеизложенным, следующий код должен быть правильно сформирован.

struct A{};
struct B : A{};

int main(){
   B b;
   A a, &ar1 = b;

   B& rb1 = dynamic_cast<B&>(ar1);  // Does not $5.2.7/2 apply here?
   B& rb2 = dynamic_cast<B&>(a);    // and also here?
}

Но это не так. Все компиляторы жалуются на то, что операнд для dynamic_cast не является полиморфным в соответствии с

$ 5.2 .7 / 6- В противном случае v будет указатель или значение l полиморфный тип (10.3).

Итак, мой вопрос: что означает $ 5.2.7 / 2? Почему здесь появляется $ 5.2.7 / 6?

10
задан Chubsdad 17 November 2010 в 10:30
поделиться