> なぜ、placeholder が必要なのでしょうか?
> placeholder がなくても良さそうに思えます。
上記URLのソースを見たのですが、placeholderが基底クラスとして存在しないと
色々な型をanyクラスに代入することができないので必要なんじゃないでしょうか?
ちなみに、
>template
>any(ValueType const & value) : content(new holder(value)) {}
こうなって見えますが正しくはこうですね。
template <typename ValueType>
any(ValueType const & value) : content(new holder<ValueType>(value)) {}
#htmlのソースを表示したらちゃんと書いてありましたけど。
上記サイトのanyを使うと以下のようなことができます。
any hoge = 1; // int型
std::string s("abc");
hoge = s; // string型を入れてもエラーにならない
> 適当ですが、、以下の用な実装では型消去と言わないのでしょうか?
この例だとanyは宣言時に型を指定しなければ使えないので型消去ではないと思います。
Any<int> hoge = 1;
std::string s("abc");
hoge = s; // string型はエラー
|