我有一個類用於組合一個值和一個錯誤代碼。在減少的形式,它看起來是這樣的:如何接受派生`shared_ptr`到接受`T const&`的構造函數?
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
韓元衍生」 t匹配這個隱式的構造函數。我不能這樣做,例如:
return make_shared<derived>();
我不得不做的事:
return wrapper<shared_ptr<base const>>(make_shared<derived>());
我怎麼能寫我的wrapper
類,這樣這個隱式轉換是允許?
請注意,wrapper
類還必須接受shared_ptr
以外的類型,例如普通結構/類類型。