{"id":4040,"date":"2019-12-23T15:59:07","date_gmt":"2019-12-23T07:59:07","guid":{"rendered":"https:\/\/damogame.cn\/wordpress\/?p=4040"},"modified":"2019-12-23T15:59:07","modified_gmt":"2019-12-23T07:59:07","slug":"c17%e6%a0%87%e5%87%86%e5%ba%93stdany","status":"publish","type":"post","link":"https:\/\/i007.cc\/wordpress\/archives\/4040","title":{"rendered":"C++17\u6807\u51c6\u5e93std::any"},"content":{"rendered":"<p>\u5b9a\u4e49\u5728any\u5934\u6587\u4ef6\u4e2d\uff1a#include &lt;any&gt;<br \/>\n\u662f\u4e00\u4e2a\u53ef\u7528\u4e8e\u4efb\u4f55\u7c7b\u578b\u5355\u4e2a\u503c\u7684\u7c7b\u578b\u5b89\u5168\u7684\u5bb9\u5668.<\/p>\n<p>\u4f7f\u7528\u65b9\u6cd5<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">#include &lt;any&gt;\r\n#include &lt;iostream&gt;\r\n\r\nint main() {\r\n    \/\/ \u5b58\u50a8\u4efb\u610f\u7c7b\u578b\u7684\u5355\u4e2a\u503c\r\n    \/\/ \u6210\u5458\u51fd\u6570type()\uff1a\u8fd4\u56de\u5bb9\u5668\u4e2d\u7684\u503c\u7684\u7c7b\u578b\r\n    \/\/\u3000\u975e\u6210\u5458\u51fd\u6570std::any_cast&lt;T&gt;()\uff1a\u5f3a\u5236\u7c7b\u578b\u8f6c\u6362\r\n    std::any a = 1;\r\n    std::cout &lt;&lt; a.type().name() &lt;&lt; \": \" &lt;&lt; std::any_cast&lt;int&gt;(a) &lt;&lt; '\\n';\/\/ i: 1\r\n    a = 3.14;\r\n    std::cout &lt;&lt; a.type().name() &lt;&lt; \": \" &lt;&lt; std::any_cast&lt;double&gt;(a) &lt;&lt; '\\n';\/\/ d: 3.14\r\n    \r\n    \/\/ bad_any_cast\r\n    try {\r\n        a = 1;\r\n        std::cout &lt;&lt; std::any_cast&lt;float&gt;(a) &lt;&lt; '\\n';\r\n    } catch (const std::bad_any_cast&amp; a) {\r\n        std::cout &lt;&lt; e.what() &lt;&lt; '\\n';\/\/ bad any_cast\r\n    }\r\n\r\n    \/\/ has_value: \u662f\u5426\u6709\u503c\r\n    any a = 1;\r\n    if (a.has_value()) {\r\n        std::cout &lt;&lt; a.type().name() &lt;&lt; std::endl;\/\/ i\r\n    }\r\n\r\n    \/\/ reset\uff1a\u6e05\u7a7a\u5bb9\u5668\r\n    a.reset();\r\n    if (a.has_value()) {\r\n        std::cout &lt;&lt; \"no value\\n\";\/\/ no value\r\n    }\r\n\r\n    \/\/ pointer to contained data\r\n    a = 1;\r\n    int* i = std::any_cast&lt;int&gt;(&amp;a);\/\/ \u8fd9\u91cc\u6709\u70b9\u5947\u602a\r\n    std::cout &lt;&lt; *i &lt;&lt; '\\n';\/\/ 1\r\n}<\/pre>\n<p>\u603b\u7ed3\uff1a<\/p>\n<p>std::any a = 1;: \u58f0\u660e\u4e00\u4e2aany\u7c7b\u578b\u7684\u5bb9\u5668\uff0c\u5bb9\u5668\u4e2d\u7684\u503c\u4e3aint\u7c7b\u578b\u76841<br \/>\na.type(): \u5f97\u5230\u5bb9\u5668\u4e2d\u7684\u503c\u7684\u7c7b\u578b<br \/>\nstd::any_cast&lt;int&gt;(a);: \u5f3a\u5236\u7c7b\u578b\u8f6c\u6362, \u8f6c\u6362\u5931\u8d25\u53ef\u4ee5\u6355\u83b7\u5230std::bad_any_cast\u7c7b\u578b\u7684\u5f02\u5e38<br \/>\nhas_value(): \u5224\u65ad\u5bb9\u5668\u4e2d\u662f\u5426\u6709\u503c<br \/>\nreset(): \u5220\u9664\u5bb9\u5668\u4e2d\u7684\u503c<br \/>\nstd::any_cast&lt;int&gt;(&amp;a): \u5f3a\u5236\u8f6c\u6362\u5f97\u5230\u5bb9\u5668\u4e2d\u7684\u503c\u7684\u5730\u5740<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5b9a\u4e49\u5728any\u5934\u6587\u4ef6\u4e2d\uff1a#include <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[],"tags":[119],"class_list":["post-4040","post","type-post","status-publish","format-standard","hentry","tag-03-"],"_links":{"self":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/4040","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/comments?post=4040"}],"version-history":[{"count":0,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/4040\/revisions"}],"wp:attachment":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/media?parent=4040"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/categories?post=4040"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/tags?post=4040"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}