问题描述
是否可以创建一个类来存储对任何类型变量的引用并允许泛型赋值(具有不同类型的值)?
想象一下这个界面:
class any_ref {
public:
...
// construct any_ref from reference
template <class T>
any_ref(T &ref);
// does stored_ref = std::forward<U>(value) internally
template <class U>
void assign(U&& value);
};
我被卡住了,无法弄清楚如何实现这一点。如果我们想象虚拟模板方法是可能的,那就很容易了:
class any_ref {
public:
...
private:
struct ref_holder {
template <class U>
virtual void assign(U&& value) = 0;
};
template <class T>
struct ref_holder_concrete : public ref_holder {
template <class U>
void assign(U&& value) override {
stored_ref = std::forward<U>(value);
}
T &stored_ref;
};
std::unique_ptr<ref_holder> ref;
};
所以我需要一些解决这种不可能的方法。问题是,赋值操作涉及两种类型。为了执行操作,我们需要以某种方式从其类型擦除存储中检索其中一种类型。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)