{"id":3491,"date":"2018-05-17T11:04:29","date_gmt":"2018-05-17T10:04:29","guid":{"rendered":"http:\/\/roboblog.fatal-fury.de\/?p=3491"},"modified":"2018-05-17T11:04:29","modified_gmt":"2018-05-17T10:04:29","slug":"c-guns-point-concept","status":"publish","type":"post","link":"http:\/\/roboblog.fatal-fury.de\/?p=3491","title":{"rendered":"C++ Guns: Point Concept"},"content":{"rendered":"<p>Ich hab mich mal schnell in Concepts eingearbeitet und provisorisch die std library concepts implementiert. Darauf hin habe ich mir ein Concept eines PointND \u00fcberlegt. Nun das m\u00fcsste einfach nur ein Container sein, mit den Funktionen x(), y() und Operatoren f\u00fcr +, -, *, \/. <\/p>\n<p>So wurde aus dem St\u00fcck Code mit viel Templates:<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\ntemplate&lt;typename Array&gt;\r\ninline auto operator+(const PointND&lt;Array&gt;&amp; lhs, const PointND&lt;Array&gt;&amp; rhs) {\r\n    return PointND&lt;Array&gt;{static_cast&lt;Array&gt;(lhs) + static_cast&lt;Array&gt;(rhs)};\r\n}\r\n<\/pre>\n<p>dieses St\u00fcck:<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\ntemplate&lt;typename PointND&gt;\r\nconcept bool Point =\r\n        requires(PointND p1, PointND p2) {\r\n        typename PointND::Base;\r\n        requires std::Container&lt;PointND&gt;;\r\n{p1.x()} -&gt; typename PointND::const_reference;\r\n{p1.y()} -&gt; typename PointND::const_reference;\r\n{p1+p2} -&gt; PointND;\r\n{p1-p2} -&gt; PointND;\r\n{p1*p2} -&gt; PointND;\r\n{p1\/p2} -&gt; PointND;\r\n};\r\n\r\ntemplate&lt;Point PointND&gt;\r\ninline auto operator+(const PointND&amp; lhs, const PointND&amp; rhs) {\r\n    return PointND{static_cast&lt;typename PointND::Base&gt;(lhs) + static_cast&lt;typename PointND::Base&gt;(rhs)};\r\n}\r\n<\/pre>\n<p>Na das ist doch schon besser. <\/p>\n<p><a href=\"https:\/\/sourceforge.net\/p\/acpl\/code\/ci\/master\/tree\/acpl\/acpllib\/include\/core\/stdconcepts.hpp\">https:\/\/sourceforge.net\/p\/acpl\/code\/ci\/master\/tree\/acpl\/acpllib\/include\/core\/stdconcepts.hpp<\/a><br \/>\n<a href=\"https:\/\/sourceforge.net\/p\/acpl\/code\/ci\/master\/tree\/acpl\/acpllib\/include\/core\/geometry\/point.hpp\">https:\/\/sourceforge.net\/p\/acpl\/code\/ci\/master\/tree\/acpl\/acpllib\/include\/core\/geometry\/point.hpp<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ich hab mich mal schnell in Concepts eingearbeitet und provisorisch die std library concepts implementiert. Darauf hin habe ich mir ein Concept eines PointND \u00fcberlegt. Nun das m\u00fcsste einfach nur ein Container sein, mit den Funktionen x(), y() und Operatoren f\u00fcr +, -, *, \/. So wurde aus dem St\u00fcck Code mit viel Templates: template&lt;typename [&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-3491","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\/3491","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=3491"}],"version-history":[{"count":2,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/posts\/3491\/revisions"}],"predecessor-version":[{"id":3493,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=\/wp\/v2\/posts\/3491\/revisions\/3493"}],"wp:attachment":[{"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3491"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3491"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/roboblog.fatal-fury.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3491"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}