プログラミング言語の重箱の隅をつつくシリーズ(って、そんなシリーズねーよ)。 ※ひとつ前が、あんまり僕らしくもない(と僕自身が感じる)エントリーだったのでコレ追加しよう、っと。 少し前に、無値(値がないということ)を話題にしました。その後、C/C++のvoidってのは、単に無値を意味するだけではないことに気付いたので書いておきます。 まず、voidの解釈として、値の集合が空集合と、値の集合が単元集合(singleton set)がありますが、空集合はちょっと変で単元集合が良かろうって言いました。それで、voidは単元集合(ただし、そのメンバーが何であるかは重要ではない)だと理解します。 さて、void *p;って書いてあるとき、pが指す先に“voidの値”があるってわけではありません。なにか未知のモノがあるという意味です。気分としては、Any *p;です。pが指す先に置いてあるデータの可能

