【发布时间】:2016-11-11 10:13:00
【问题描述】:
我有一个变量包装器,当通过这个包装器修改底层变量时,它会发出更改信号,因此其他对象可以监听更改。
它工作正常(即我可以在底层对象上分配、加、减、调用成员函数(尽管这些函数无法发出更改信号)等),但有一点小问题:如果我这样做了
struct some_object_type
{
wrapper<int> some_wrapper;
}
int main()
{
some_object_type some_object;
auto value = some_object.some_wrapper;
}
value 这里被正确推断为wrapper<int>。有什么方法可以让这个结构表现得好像some_object.some_wrapper 是int 类型,所以value 被推导出为int 变量?
【问题讨论】:
-
当
some_wrapper不是int时,为什么要将其类型推导出为int? -
你可以
deletesome_wrapper的复制构造函数并将隐式转换运算符写入T。这对你来说合理吗? -
auto value = ...是复制构造的示例,而不是赋值。
标签: c++ c++14 auto type-deduction conversion-operator