私は値とエラーコードを組み合わせるために使用するクラスを持っています。還元された形で、それは次のようになります。`T const&`を受け入れるコンストラクタに派生した `shared_ptr`を受け入れる方法はありますか?
template<typename T>
struct wrapper {
T result;
err_enum err;
wrapper(T const & result) :
result(result) {
err = err_okay;
}
}
私は、その戻り値としてこれを使用する機能を持っている:
wrapper<shared_ptr<base const>> foo() { ... }
私がいる問題は、「クラスがbase
ウォンに由来していることですこの暗黙のコンストラクタと一致しません。私は、例えば、行うことはできません。
return make_shared<derived>();
私がやることを余儀なくしています:
return wrapper<shared_ptr<base const>>(make_shared<derived>());
この暗黙の変換は許可されているように、どのように私は私のwrapper
クラスは書くことができますか?
なお、wrapper
クラスは、plain struct/class型など、shared_ptr
以外の型も受け入れる必要があります。