私はこれをあきらめます...
$ 5.2.7 / 2- "Tがポインター型の場合、vは完全なクラス型へのポインターの右辺値であり、結果はタイプTの右辺値になります。Tが参照型の場合、vはの左辺値になります。完全なクラス型であり、結果はTによって参照される型の左辺値です。」
上記に従って、次のコードは整形式である必要があります。
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はポリモーフィック型(10.3)へのポインタまたは左辺値になります。
だから私の質問は$5.2.7/ 2はどういう意味ですか?なぜ$5.2.7/ 6がここで始まるのですか?