C++ 17にはCallable
のコンセプトがあり、std::is_function<T>::value
がtrue
のタイプとはまったく異なる点がありました。彼らは同等ですか? 1つは他のスーパーセットですか?Callable概念とstd :: is_function型形質の違いは何ですか?
答えて
C++ 17には、それはC++ 11以降の標準であります
Callable
概念
を持つことになります。
相当ですか? 1つは他のスーパーセットですか?
いいえ、実際には完全に分離しています。 Callable
はオブジェクト型にのみ適用され、ポインターツーメンバーからオーバーロードされたoperator()
型まで、関数ポインタへの関数ポインタへの暗黙的な変換を伴う型へのすべてが含まれます。
is_function
は、実際の関数型(定義ではオブジェクト型ではない)に対してのみtrueです。
'Callable'も関数には適用されませんか? –
@NeilKirkいいえ、標準ではありません。 [\ [func.wrap.func \]/2](http://eel.is/c++draft/func.wrap.func#2)を参照してください( "タイプFの呼び出し可能なオブジェクトfは呼び出し可能です... ")、[\ [func.def \]/3-4](http://eel.is/c++draft/function.objects#func.def-3)("呼び出し可能な型は関数オブジェクト型呼び出し可能なオブジェクトは呼び出し可能な型のオブジェクトです。 ")、[\ [function.objects \]/1](http://eel.is/c++draft/function.objects# 1)( "関数オブジェクト型は、関数呼び出しでpostfix-expressionの型となるオブジェクト型です。" –
LWGは[ここでの文言を調整する可能性があります](http://wg21.link/lwg2393 )、この答えに影響するような方法ではない( 'Callable'を' Lvalue-Callable'に改名することを除いて)。 –
- 1. binとgenの概念の違いは何ですか?
- 2. 論理データモデルと概念データモデルの違いは何ですか?
- 3. ドメインモデルと概念モデルの違いは何ですか
- 4. CNTKTextFormatDeserializerの概念とは何ですか?
- 5. Photon Unity Networkingのロビーとルームという概念の違いは何ですか?
- 6. 概念とは何ですか?
- 7. Magento:Quote ItemとQuote Address Itemの概念の違いは何ですか?
- 8. .vagrantと.vagrant.dディレクトリの論理的/概念的な違いは何ですか?
- 9. オブジェクトパーシスタンスの概念は何ですか?
- 10. `std :: regex`違反の概念を作成するのはなぜですか?
- 11. CallableステートメントとSQLのPrepared Statementの違いは何ですか?
- 12. 概念ドメインモデル、アプリケーションクラスモデル、および統合クラスモデルの違いは何ですか?
- 13. Erlang Actors、Scala Actors、理論的概念 "Actor"の違いは何ですか?
- 14. 概念的には、Android StudioのLogcatとは何ですか?
- 15. この概念は何と呼ばれていますか?
- 16. このURL文字列の概念とは何ですか?
- 17. Javaの列挙型:概念疑い
- 18. express req.localsとres.localsの概念的なベストプラクティスは何ですか?
- 19. Anecessと同等の概念を持つAnstatesは何ですか?
- 20. Angularでは、約束のエラーとキャッチ関数の概念の違いは何ですか?
- 21. 形質、フリーテキスト、キーワードの違いは何ですか?
- 22. sqlite概念からcoredata概念へ?
- 23. OOP概念のAOPと継承の違いは?
- 24. 概念的な違いSpark 2.0のRDDとデータセットの関係は?
- 25. 概念ヘルプと.NETのAPIヘルプの違いは?
- 26. std :: invokeとstd :: functionの違いは何ですか?
- 27. std :: valarrayとstd :: arrayの違いは何ですか
- 28. std :: setとstd :: vectorの違いは何ですか?
- 29. std :: string :: c_strとstd :: string :: dataの違いは何ですか?
- 30. std :: partial_sumとstd :: inclusive_scanの違いは何ですか?
うまくいけば、 'operator()'のオーバーロードされたオブジェクトが呼び出せますが、関数ではありません –
@ M.M名前に問題があると思います。関数*は呼び出し可能ですが、関数オブジェクトも同様です。より良い名前がないのは残念です... ...? – VermillionAzure