std :: bindおよびstd :: function項は、0個の引数を取るものとして評価されませんか?

メタブラスター

私は、アルゴリズムのパフォーマンステストのためにさまざまなプロトタイプの関数を実行するために使用されるジェネリッククラスに取り組んでいます。

std::functionバインドされたものを実行できないため、スタックしました。エラーが発生した場所にコメント付きのサンプルコードを次に示します。

#include <utility>
#include <functional>

template<typename ReturnType>
class Performance
{
public:
    template<typename... Args>
    using Algorithm = std::function<ReturnType(Args...)>;

    template<typename... Params>
    void run(const Algorithm<Params...>& ref, const Algorithm<Params...>& target)
    {
        // ERROR: term does not evaluate as taking 0 args
        ref();
        target();
    }
};

void bar1(int, int)
{
    // algorithm 1
}

void bar2(int, int)
{
    // algorithm 2
}

int main()
{
    using test = Performance<void>;
    using Algorithm = test::Algorithm<int, int>;

    int x = 0;
    int y = 1;

    Algorithm ref = std::bind(bar1, std::ref(x), std::ref(y));
    Algorithm target = std::bind(bar2, std::ref(x), std::ref(y));

    test foobar;

    foobar.run(ref, target);
}
ソンユアンヤオ

問題は、std::functionタイプ、つまりAlgorithm2つのパラメーター(タイプ付きintを取るように宣言されていることです。それらを呼び出すときは、2つの引数が必要です。

std::bind適用、返されるファンクターはパラメーターを取りません。引数(std::ref(x)およびstd::ref(y))がバインドされています。Algorithmとして宣言する必要があります

using Algorithm = test::Algorithm<>;

住む

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

std :: bindおよびstd :: function with polymorphism、base class

分類Dev

std :: bindおよび右辺値の参照

分類Dev

std :: functionおよびstd :: bindの戻り値

分類Dev

std :: bindをstd :: functionおよびstd :: mapと一緒に使用する方法

分類Dev

std :: bind2ndおよびstd :: bindと2次元配列および構造体の配列

分類Dev

std :: functionおよびstd :: bindでC ++テンプレートを使用する

分類Dev

C ++ 11:継承でstd :: mem_fnおよびstd :: bindを使用する方法

分類Dev

std :: bindおよび関数テンプレート

分類Dev

std :: bindがstd :: filesystem :: pathおよびstd :: ostreamで機能しないのはなぜですか?

分類Dev

clang-6および-std = c ++ 17-bind(2)を呼び出せません

分類Dev

std :: bindおよびstd :: weak_ptr

分類Dev

std :: bindおよびstd :: placeholdersを使用する可変個引数テンプレートファクトリ

分類Dev

std :: functionおよびstd :: bind:それらは何であり、いつ使用する必要がありますか?

分類Dev

std :: bindおよびstd :: functionを使用すると、コールバックが失敗します

分類Dev

std :: bindとメンバー関数およびこれはc ++で

分類Dev

可変個引数テンプレートを使用したstd :: ref()およびstd :: bind()について少しぼんやりしています

分類Dev

std :: bindおよびstd :: threadのセマンティクス/動作を移動します

分類Dev

ソートされたベクトルのstd :: find_ifおよびstd :: bind2ndの置換

分類Dev

std :: string_viewおよびstd :: stringのstd :: unordered_set

分類Dev

std :: bindと可変個引数テンプレートおよび自動戻り値の型

分類Dev

std :: bindおよびstack-use-after-scope

分類Dev

GCC4.9およびclang3.5のstd :: rbeginおよびstd :: rend関数

分類Dev

std :: threadおよび右辺値の参照

分類Dev

boost :: any_castおよびstd :: optionalの

分類Dev

clang、std :: functionおよび-fno-rtti

分類Dev

std :: mapの値として使用されるstd ::関数への0個以上の引数を設定するにはどうすればよいですか?

分類Dev

std :: bindおよび基本クラスメソッドへの非仮想呼び出し

分類Dev

C ++ 17 std :: from_charsおよびstd :: to_charsの目的は?

分類Dev

C ++ std :: shared_futureおよびstd :: promiseとは

Related 関連記事

  1. 1

    std :: bindおよびstd :: function with polymorphism、base class

  2. 2

    std :: bindおよび右辺値の参照

  3. 3

    std :: functionおよびstd :: bindの戻り値

  4. 4

    std :: bindをstd :: functionおよびstd :: mapと一緒に使用する方法

  5. 5

    std :: bind2ndおよびstd :: bindと2次元配列および構造体の配列

  6. 6

    std :: functionおよびstd :: bindでC ++テンプレートを使用する

  7. 7

    C ++ 11:継承でstd :: mem_fnおよびstd :: bindを使用する方法

  8. 8

    std :: bindおよび関数テンプレート

  9. 9

    std :: bindがstd :: filesystem :: pathおよびstd :: ostreamで機能しないのはなぜですか?

  10. 10

    clang-6および-std = c ++ 17-bind(2)を呼び出せません

  11. 11

    std :: bindおよびstd :: weak_ptr

  12. 12

    std :: bindおよびstd :: placeholdersを使用する可変個引数テンプレートファクトリ

  13. 13

    std :: functionおよびstd :: bind:それらは何であり、いつ使用する必要がありますか?

  14. 14

    std :: bindおよびstd :: functionを使用すると、コールバックが失敗します

  15. 15

    std :: bindとメンバー関数およびこれはc ++で

  16. 16

    可変個引数テンプレートを使用したstd :: ref()およびstd :: bind()について少しぼんやりしています

  17. 17

    std :: bindおよびstd :: threadのセマンティクス/動作を移動します

  18. 18

    ソートされたベクトルのstd :: find_ifおよびstd :: bind2ndの置換

  19. 19

    std :: string_viewおよびstd :: stringのstd :: unordered_set

  20. 20

    std :: bindと可変個引数テンプレートおよび自動戻り値の型

  21. 21

    std :: bindおよびstack-use-after-scope

  22. 22

    GCC4.9およびclang3.5のstd :: rbeginおよびstd :: rend関数

  23. 23

    std :: threadおよび右辺値の参照

  24. 24

    boost :: any_castおよびstd :: optionalの

  25. 25

    clang、std :: functionおよび-fno-rtti

  26. 26

    std :: mapの値として使用されるstd ::関数への0個以上の引数を設定するにはどうすればよいですか?

  27. 27

    std :: bindおよび基本クラスメソッドへの非仮想呼び出し

  28. 28

    C ++ 17 std :: from_charsおよびstd :: to_charsの目的は?

  29. 29

    C ++ std :: shared_futureおよびstd :: promiseとは

ホットタグ

アーカイブ