2019-01-04-01-emplace系メソッドが追加要素の参照を返す - project-enigma

2019-01-04-01-emplace系メソッドが追加要素の参照を返す

>> Site top >> weblog >> 月別アーカイブ >> 2019年01月のlog >> 2019-01-04-01-emplace系メソッドが追加要素の参照を返す

最終更新日付:2019/01/04 18:51:03


emplace系メソッドが追加要素の参照を返す

2019 年 01 月 04 日

昨年の大晦日にコミットしたやつを、今更紹介。C++17 での変更。

元々、STL コンテナの insert メンバ関数は追加要素を指す反復子を返す。これに倣って、emplace メンバ関数も同様に反復子を返していた。しかし、emplace_backemplace_frontvoid だったわけだ。これが、C++17 において「追加した要素の参照を返す」ように変更された。

cl-stl での emplace 系メソッドは、マクロを用いて実現されている。なので、メソッドの本体は追加するべきオブジェクトを受け取るだけだ。だから、今回の変更はこんなふうにしかならない。

#-cl-stl-0x98
(defmethod-overload emplace_back ((container stl:vector) new-val)
  (__vector-push_back (vector-core container) new-val nil)
  #+(or cl-stl-0x11 cl-stl-0x14) nil
  #-(or cl-stl-0x11 cl-stl-0x14) new-val)

 

こういう簡単な変更を繰り返して、リハビリしてくしかないかな‥‥‥。

 

 

コメント

このページにコメントする

 

このページのタグ

Page tag : STLとその移植

Page tag : Common Lisp

 

 


Copyright(C) 2005-2019 project-enigma.
Generated by CL-PREFAB.