0057デフォルトの名無しさん (ワッチョイ 174f-9b2l)
2018/09/18(火) 22:37:48.65ID:9yuSYzSe0教えてもらえないだろうか。
(自信は持てないが)
俺の理解では、コンテナのデストラクタは中身のデストラクタをキックする必要があって、
今は以下のように書いていて、それなりに動いているように見える。
~MyContainer(){
for (int i=0;i<length;i++) ptr[i].~T();
}
要するに中身のデストラクタを一つずつ直接呼び出している。
ところが、例えばGNUのvectorのデストラクタは空だ。
> 00126 ~vector() { }
> https://gcc.gnu.org/onlinedocs/gcc-4.6.3/libstdc++/api/a01115_source.html
これはどういう事なのだろうか?
他に参考になるソースでもいいから教えてもらえれば助かる。
なお、以下では俺と似たようなことをやっている。
> ~Stack () throw()
> {
> std::for_each(array_, array_ + top_, destroy<T>);
> ::operator delete(array_); // グローバルスコープの delete 演算子
> }
> https://ja.wikibooks.org/wiki/More_C%2B%2B_Idioms/%E6%B1%8E%E7%94%A8%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E4%BD%9C%E6%88%90%E7%94%A8%E3%82%A4%E3%83%87%E3%82%A3%E3%82%AA%E3%83%A0(Generic_Container_Idioms)