teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

add link

2019/09/26 11:52

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -4,11 +4,11 @@
4
4
 
5
5
  > std::functionを使えばできるのでしょうか・・・?
6
6
 
7
- `std::function`では実装不可能です。`std::function<R(Args...)>`のように戻り値型`R`と引数リスト`Args...`を明示する必要があるため、「引数や戻り値が異なる関数ポインタ」を同`std::function`型として扱えません。
7
+ [`std::function`クラステンプレート](https://cpprefjp.github.io/reference/functional/function.html)では実装不可能です。`std::function<R(Args...)>`のように戻り値型`R`と引数リスト`Args...`を明示する必要があるため、「引数や戻り値が異なる関数ポインタ」を同`std::function`型扱えません。
8
8
 
9
9
  ----
10
10
 
11
- 一応、どんなデータ型(任意の関数ポインタも含む)でも扱える`std::any`を使った実装コードす。呼び出し側では格納した型(`FUNCPTR1`や`FUNCPTR2`)を明示する必要があります。不一致の場合は、`std::bad_any_cast`例外がスローされます。
11
+ 一応、どんなデータ型(任意の関数ポインタも含む)でも扱える[`std::any`クラス](https://cpprefjp.github.io/reference/any/any.html)を使った実装コードの例を示します。呼び出し側では格納した型(`FUNCPTR1`や`FUNCPTR2`)を明示する必要があります。不一致の場合は、`std::bad_any_cast`例外がスローされます。
12
12
 
13
13
  Demo: [https://wandbox.org/permlink/reO9fTJ9jkV1O4dr](https://wandbox.org/permlink/reO9fTJ9jkV1O4dr)
14
14