void への参照ができないのはなぜですか? C++ 標準で見つけたのは、この行の8.3.2.1 だけです。
タイプ「 cv 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
}