考虑以下参考包装器:
template <class T>
struct wrapper
{
wrapper(T& x): reference{x} {}
void set(const T& x) {reference = x;}
T& get() const {return reference;}
T& reference;
};
我想知道:
- 如何仅通过模板别名声明 const 引用包装器
template <class T> using const_wrapper = /* const wrapper<T> or wrapper<const T>?*/
- 如果在这种状态下不可能,如何更改包装器结构以使前面的点成为可能?
- 如何解决以下问题:
int i = 42; wrapper<const char> w(i);
会编译但不工作(我想阻塞构造函数) - 对于什么具体问题,
iterator
一般const_iterator
有两种不同的实现方式?