以下のコードの割り当てがコンパイルに失敗するのはなぜですか?
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*" が他のスレッドによって変更されるポインターへのポインターである場合、割り当てにキャストが必要なのはなぜですか。不揮発性版ではありませんか?