【发布时间】:2016-01-21 12:22:28
【问题描述】:
假设我有以下类型:
using pointer = std::shared_ptr<MyType>;
using pointer_to_const = std::shared_ptr<const MyType>;
现在,如果我有如下代码:
void fun(pointer_to_const ptr);
pointer myObj = SomeFactoryMethod();
fun(myObj);
pointer 和 pointer_to_const 之间是否存在自动转换?如果有,在此转换过程中是否会复制底层 MyType 对象?
因为如果有转换,并且没有副本,那么在多线程上下文中,另一个线程可以使用原始的myObj 指针来修改底层对象,从而违反const 所期望的fun。
【问题讨论】:
标签: c++ multithreading c++11 constants shared-ptr