從here在我看來,std::function
沒有function_type
或等效的成員類型來導出用於初始化它的實際類型。
它有result_type
,argument_type
,以及first_argument_type
和second_argument_type
,但沒有像上面提到的類型。
爲什麼它不提供這種類型作爲其接口的一部分?
肯定會有一個很好的理由,但我無法弄清楚是什麼原因,所以我只是好奇地發現它。爲什麼std :: function沒有function_type或等效的成員類型?
因爲我知道第一個問題將是你爲什麼需要它,好了,以爲我想這樣做std::is_same<F1::function_type, F2::function_type>::value
檢查,如果它們的基礎類型是一個SFINAE評價,它是相同的如果它們包含不同的功能,只要符號相同即可。
我承認這沒什麼道理,說實話這個問題只是爲了好奇。
編輯
如在his answer的評論注意到@布賴恩,我濫用初始化當我寫的詞:
出口用於初始化它
的實際類型
我感興趣的是模板參數。
作爲示例,對於std::function<void(S&, int)>
(其中S
是結構),function_type
將是void(S&, int)
。
對於'is_same'檢查,您可以簡單地檢查'F1'和'F2'是否是相同的類型,不是嗎? – Brian
@布賴恩是的,絕對,請注意我的評論*我承認它沒有多大意義*! :-) ...我只是想知道是否有一個原因,它不是該函數的接口的一部分,即使我找不到它的合理用途,這將是一個很好的反應確實。我不確定*這是無用的*是唯一合理的迴應,或者是否有其他原因。就這樣。 – skypjack