为什么不可能引用 void?我在 C++ 标准中找到的唯一内容是这一行,位于8.3.2.1
指定类型“对cv void的引用”的声明符格式不正确。
为什么会这样?为什么我不能编写一个接受 a 的“通用”函数void&
?
为了清楚起见,我没有想到使用 void 引用可能比使用模板更好的有用应用程序,但我只是对禁止这种构造的理由感到好奇。
为了澄清一点,我知道“按原样”使用对 void 的引用与取消引用指向 void 的指针一样毫无意义。但是,我可以将它转换为对某种类型的引用以便使用它,不是吗?事实上,我不明白为什么下面的代码片段可以工作......
void foo(void *data)
{
int *i = reinterpret_cast<int*>(data);
// do something with i
}
...虽然这个不能:
void foo(void &data)
{
int &i = reinterpret_cast<int&>(data);
// do something with i
}