std::functionのtarget関数

 

std::functionというクラスのtarget関数の話。

 

std::functionの簡単な機能は以下の通り。

  1. 関数を動的に切り替えられる
  2. operator()で関数を呼ぶことができる。
  3. explict operator bool でstd::functionが空かどうかわかる。


C++17からはassign関数が削除される。

よくわからないが一時的なオブジェクトはどうなるのだろう。

 これも気になるが一旦置いておいて。

 

本題。個人的にはtarget関数でハマった。

cpprefjp.github.io

 

何故テンプレート関数なのか、最初わからなかった。

今保持しているものが関数かクラスかはわからないから、外から与える必要があるらしい。

型引数に依存して適切なポインタかnullptrを返す以上は、
それが適切な型かどうかはわかる、にもかかわらず必要なのか。

 ただ、funtionの型引数からは関数の返り値と引数しかわからないだろうから必要な気もしてくる。

 

 

wandbox.org