続・C++でvariant型型自由
「variant型」ばかりに注目していたからいけなかった。boost では any というクラスが定義され、それが型自由なオブジェクトを提供してくれる。
any a=100; int i; i=any_cast(a); a=string("hoge"); // エラーにならない
any から値取り出すときは、明示的にキャスト動作で型を指定する必要があるが、そのキャストにもテンプレートを使っているところが驚き。このやり方は考え付かなかった。
ただ、テンプレートを巧みに使って実現できているのだが、どうして型の違う値を保持できるのかわからない。テンプレートをもっと勉強せにゃいかんな。