shared_ptrのコンストラクタにDerivedFrom

shared_ptrのコンストラクタはN2800では以下のようになってますが

template <class T>
class shared_ptr {
public:
    template <class Y>
    explicit shared_ptr(Y* p);
};

YはDerivedFromコンセプトで制約しておいたほうがいいんじゃないかな

template <class T>
class shared_ptr {
public:
    template <class Y>
    requires DerivedFrom<Y, T>
    explicit shared_ptr(Y* p);
};

カスタム削除子もCallableコンセプトで制約したほうがいいですね。

shared_ptr自体がまだコンセプトに対応してないからなんだろうけど。


ん、DerivedFromで制約したらshared_ptrできなくなるか。