covariant の戻り型
ref class B { public: virtual B^ clone() { return gcnew B(); } }; ref class D : B { public: virtual D^ clone() override { return gcnew D(); } }; void main() { D^ d = gcnew D(); D^ d1 = d->clone(); } /* 結果 $ cl /clr:safe derived.cpp derived.cpp(10) : error C2392: 'D ^D::clone(void)' : covariant の戻り型は マネージ クラスでサポートされていません。サポートされる場合は、 'B ^B::clone(void)' はオーバーライドされます。 derived.cpp(3) : 'B::clone' の宣言を確認してください。 */
C++/CLIだと共変の戻り型(仮想関数の戻り値型を派生クラスで置き換える)をサポートしてくれないんですね。C#も出来ないのでやっぱりって感じですけど。あと、constなメンバ関数が駄目なのも残念です。