続・C++でvariant型型自由

「variant型」ばかりに注目していたからいけなかった。boost では any というクラスが定義され、それが型自由なオブジェクトを提供してくれる。

any a=100;
int i;
i=any_cast(a);
a=string("hoge");    // エラーにならない

any から値取り出すときは、明示的にキャスト動作で型を指定する必要があるが、そのキャストにもテンプレートを使っているところが驚き。このやり方は考え付かなかった。

ただ、テンプレートを巧みに使って実現できているのだが、どうして型の違う値を保持できるのかわからない。テンプレートをもっと勉強せにゃいかんな。