9
作業のthis質問、私は矛盾した動作が見つかりました。定数参照先の値へのバインド
参照バインディングがコンストラクタ内で共通の関数と異なる動作をする理由を教えてください。
struct A {
};
struct B : public A {
B(){}
private:
B(const B&);
};
void f(const B& b) {}
int main() {
A a(B()); // works
A const & a2 = B(); // C++0x: works, C++03: fails
f(B()); // C++0x: works, C++03: fails
}
私はC++ ++グラムと03のためにそれをテストしている - 厳密C++ 03モードで4.1とコモ4.2.45.2および無効になってC++ 0xの拡張子を持ちます。私は同じ結果を得た。
C++ 0xはg ++ - 4.4とComeau 4.3.9でリラックスモードで、C++ 0x拡張を有効にしてテストされました。私は同じ結果を得た。
を。 – earl
私は誰かに「あなたが最も苦しい解析問題の犠牲者になった」と言うことができる日を待つことができません。もちろん、起きるまでには、私はそれを完全に忘れて、C++を嫌うことに戻ります。 –