Здравствуйте, _NN_, Вы писали:
_NN>Есть ли система типов, которая позволяет переопределить M<U> как U в наследнике ?
_NN>Например имея Nullable<int> в базовом классе , наследник мог бы определить int , тем самым усиливая условия и удовлетворяя требованием базового.
_NN>_NN>class A
_NN>{
_NN> virtual Nullable<int> X { get { return null; } }
_NN>}
_NN>class B : A
_NN>{
_NN> override int X { get { return 1; } }
_NN>}
_NN>
_NN>Ну и далее в общем случае имея скажем List<U> определить в наследнике U или явно пустой список.
В общем случае, например С++:
#include <iostream>
using namespace std;
struct Base {
public:
virtual ~Base(){}
virtual Base* Clone() { return new Base(*this); }
};
struct Child: Base {
public:
virtual Child* Clone() override { return new Child(*this); }
};
int main() {
// your code goes here
return 0;
}