std-function

    7熱度

    2回答

    有沒有什麼辦法從lambda中恢復類型信息,其默認參數存儲在一個std :: function函數中,該函數的類型中沒有這些參數? std::function<void()> f1 = [](int i = 0){}; std::function<void(int)> f2 = [](int i = 0){}; std::function<void(int)> f3 = f1; // erro

    2熱度

    0回答

    如果我通過引用將一個從std :: function派生的對象傳遞給另一個函數,那麼程序在運行時總是會因bad_function_call錯誤而崩潰。如以下代碼表示: #include<functional> #include<iostream> class foo :public std::function<int(void)> { public: int opera

    3熱度

    2回答

    雖然std::function是可移動的,但在某些情況下不可能或不方便。複製它有重大的懲罰嗎? 它可能取決於捕獲的變量的大小(如果它是使用lambda表達式創建的)?它依賴於實現嗎?

    -5熱度

    1回答

    在我的代碼中,我有一個std ::函數,它將在運行時根據用戶輸入定義,其他文件稍後將調用此函數。一個最小的(不)工作的代碼的例子如下: 在my_func.h文件,我有: #pragma once #include <iostream> #include <functional> std::function<int(int)> inc_step; void SetIncFunc();

    2熱度

    1回答

    我在Visual Studio(2015)上運行這個非常簡單的例子。 由於某種原因Functor類析構函數被調用了4次。 我假設實現會調用自動生成的複製構造函數幾次,但我懷疑這裏可能存在一個錯誤。如果我自己實現一個拷貝構造函數,那麼我只得到3個與1個默認構造函數調用和2個拷貝構造函數調用相對應的析構函數調用。 #include <functional> #include <map> #incl

    3熱度

    4回答

    由於模板類型推導的問題,此代碼不能編譯,即使在C++ 14下也不會編譯。什麼是最不起眼的解決方法? #include <vector> #include <functional> #include <iostream> template <class T> std::vector<T> merge_sorted( const std::vector<T>& a, const st

    -1熱度

    1回答

    我正在嘗試編寫一個頭文件,其中包含一個調用main.cpp中的函數並轉發任意數量參數的函數。此代碼的返回類型需要與轉發函數的返回類型相匹配。爲了達到這個目的,我編寫了下面的虛擬程序,但是我無法得到它來編譯。我會一些幫助感激: #include <functional> #include <iostream> double f(double x, int params) { retu

    1熱度

    2回答

    我正在研究一個複雜的框架,它使用std::function<>作爲許多函數的參數。通過分析我發現以下一個性能問題。 有人可以解釋爲什麼Loop3a太慢嗎?我預計內聯會被使用,時間也會一樣。裝配也一樣。有什麼方法可以提高性能或改變方式嗎? C++ 17是否會以這種方式進行改變? #include <iostream> #include <functional> #include <chrono>

    0熱度

    1回答

    我只是想將一個lambda函數傳遞給一個回調函數。我正在使用std::function進行回調。我需要傳遞數據到這個函數,這是我遇到問題的地方。下面的錯誤代碼中的代碼「無法轉換爲預期類型」。目標是在SDL的事件中使用回調。我不確定這是否是正確的做法。我將回調函數存儲在unordered_map中,密鑰爲SDL_Event.type和vector的std::function。 我在設置中調用了事件輪

    0熱度

    1回答

    我有一個類Foo含有Bar s的vector: class Foo { public: void create(); void callback(); std::vector<Bar> mBars; } 我Bar類包含此構造: class Bar { Bar(const int x, const int y, std::function<voi