cppreferenceから、次のことがわかりました。
クラス テンプレート std::function は、汎用のポリモーフィック関数ラッパーです。std::function のインスタンスは、任意の Callable ターゲット (関数、ラムダ式、バインド式、またはその他の関数オブジェクト、メンバー関数へのポインター、データ メンバーへのポインター) を格納、コピー、および呼び出すことができます。
なぜ a がそのようなポインターを格納できるのかがわかりませんstd::function
。また、その機能について聞いたことがありません。
それは本当に可能ですか、私は何かを逃したか、それはドキュメントのエラーですか?
そのような場合、どのようにoperator()
振る舞うべきですか?ドキュメント
からのように:
パラメーター args を使用して、格納されている呼び出し可能な関数ターゲットを呼び出します。
とにかく、ここで呼び出す呼び出し可能な関数ターゲットは格納されていません。私が間違っている?
正直なところ、そのような関数の正しい構文を理解することさえできません。そうでなければ、それをテストするために例を書いたでしょう。
次のテンプレートを使用して、データ メンバーへのポインターを定義するにはどうすればよいでしょうか?
template< class R, class... Args >
class function<R(Args...)>