为什么下面代码中的赋值编译失败?
struct foo
{
int* m_NormalIntPointer;
int* volatile m_IntPointerModifiedByManyThreads;
void func()
{
//compiles fine
void* pointerToNormalPointer = &m_NormalIntPointer;
//does not compile
void* volatile* pointerToPointerModifiedByManyThreads = &m_IntPointerModifiedByManyThreads;
}
};
如果 m_IntPointerModifiedByManyThreads 是指向 int 的指针,并且该指针可以被其他线程修改,而“void* volatile*”是指向可以被其他线程修改的指针的指针,为什么赋值需要强制转换,其中非易失版本没有?