从 Foo** 到 void** 的无效转换 - 为什么隐式类型转换允许到 void* 而不允许到 void**?

Vio*_*ffe 2 c++ gcc type-conversion

struct Foo {};
...
void * p = (Foo*)0; // OK
void ** pp = (Foo**)0; // Invalid conversion
Run Code Online (Sandbox Code Playgroud)

据我所知,void*在 C++ 中可以隐式转换为指向任何非指针类型的指针。为什么同样不允许将 ponter 转换为指针类型 to void**

Yu *_*Hao 5

指针可以隐式转换为,void *因为void *是通用指针。但是,void **不是指向指针的通用指针。

C FAQ 4.9解释了为什么C中没有指向指针类型的通用指针,我认为它也适用于 C++。