我有一个类用于组合一个值和一个错误代码。在减少的形式,它看起来是这样的:如何接受派生`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
以外的类型,例如普通结构/类类型。