{"id":3325,"date":"2018-01-16T12:36:50","date_gmt":"2018-01-16T11:36:50","guid":{"rendered":"http:\/\/roboblog.fatal-fury.de\/?p=3325"},"modified":"2018-01-23T14:36:59","modified_gmt":"2018-01-23T13:36:59","slug":"c-guns-passing-lambda-to-class","status":"publish","type":"post","link":"http:\/\/roboblog.fatal-fury.de\/?p=3325","title":{"rendered":"C++ Guns: passing lambda to class - class template argument deduction"},"content":{"rendered":"<p>auf<a href=\"http:\/\/en.cppreference.com\/w\/cpp\/language\/class_template_argument_deduction\"> http:\/\/en.cppreference.com\/w\/cpp\/language\/class_template_argument_deduction<\/a><br \/>\ngibts das halbe beispiel<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n\/\/ deduces Foo&lt;T&gt;, where T is the unique lambda type\r\n std::for_each(vi.begin(), vi.end(), Foo(&#x5B;&amp;](int i) {...})); \r\n<\/pre>\n<p>Ein compilierf\u00e4higes Beispiel w\u00e4re folgendes:<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\ntemplate&lt;typename T&gt;\r\nstruct Foo {\r\n        Foo(T lambda) : lambda(lambda) {\r\n        }\r\n\r\n\r\n        void operator()(int y) {\r\n                lambda(y);\r\n        }\r\n\r\n        T lambda;\r\n};\r\n\r\nint main() {\r\n        std::vector&lt;int&gt; vi {1,2,3};\r\n        std::for_each(vi.begin(), vi.end(), Foo( &#x5B;&amp;](int i) { std::cout &lt;&lt; i &lt;&lt; &quot;\\n&quot;;} ));\r\n}\r\n<\/pre>\n<blockquote><p>g++ --version<br \/>\ng++ (GCC) 7.1.0<br \/>\ng++ -std=c++17 lambdaFoo.cpp<br \/>\n$ .\/a.out<br \/>\n1<br \/>\n2<br \/>\n3<\/p>\n<\/blockquote>\n<p>Aber hat irgendjemand eine Idee, was man damit anfangen soll? Mir erschlie\u00dft sich das gerade nicht.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>auf http:\/\/en.cppreference.com\/w\/cpp\/language\/class_template_argument_deduction gibts das halbe beispiel \/\/ deduces Foo&lt;T&gt;, where T is the unique lambda type std::for_each(vi.begin(), vi.end(), Foo(&#x5B;&amp;](int i) {...})); Ein compilierf\u00e4higes Beispiel w\u00e4re folgendes: template&lt;typename T&gt; struct Foo { Foo(T lambda) : lambda(lambda) { } void operator()(int y) { lambda(y); } T lambda; }; int main() { std::vector&lt;int&gt; vi {1,2,3}; std::for_each(vi.begin(), vi.end(), Foo( [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[17],"class_list":["post-3325","post","type-post","status-publish","format-standard","hentry","category-allgemein","tag-cpp"],"_links":{"self":[{"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/posts\/3325","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3325"}],"version-history":[{"count":7,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/posts\/3325\/revisions"}],"predecessor-version":[{"id":3336,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/posts\/3325\/revisions\/3336"}],"wp:attachment":[{"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3325"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3325"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3325"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}