{"id":1016,"date":"2020-05-08T17:03:54","date_gmt":"2020-05-08T09:03:54","guid":{"rendered":"https:\/\/beijian99.top\/?p=1016"},"modified":"2025-05-08T17:28:24","modified_gmt":"2025-05-08T09:28:24","slug":"c14-%e6%96%b0%e7%89%b9%e6%80%a7","status":"publish","type":"post","link":"https:\/\/beijian99.top\/?p=1016","title":{"rendered":"C++14 \u65b0\u7279\u6027"},"content":{"rendered":"\n<p>\u4e00\u3001\u51fd\u6570\u8fd4\u56de\u7c7b\u578b\u63a8\u5bfc\u589e\u5f3a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u666e\u901a\u51fd\u6570\u8fd4\u56de\u7c7b\u578b\u63a8\u5bfc<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>\/\/ C++11 \u9700\u8981\u5c3e\u7f6e\u8fd4\u56de\u7c7b\u578b<br>auto add(int a, int b) -> int { return a + b; }<br><br>\/\/ C++14 \u53ef\u4ee5\u76f4\u63a5\u63a8\u5bfc<br>auto add(int a, int b) { return a + b; }<\/code><\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><code>decltype(auto)<\/code> \u8fd4\u56de\u7c7b\u578b<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>int&amp; get_ref(int&amp; x) { return x; }<br><br>\/\/ C++11 \u65b9\u5f0f<br>auto get_ref11(int&amp; x) -> int&amp; { return x; }<br><br>\/\/ C++14 \u66f4\u7b80\u6d01<br>decltype(auto) get_ref14(int&amp; x) { return x; }<\/code><\/pre>\n\n\n\n<p>\u4e8c\u3001\u6cdb\u578b Lambda \u8868\u8fbe\u5f0f<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u53c2\u6570\u7c7b\u578b\u4f7f\u7528 <code>auto<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>\/\/ C++11 Lambda \u5fc5\u987b\u6307\u5b9a\u53c2\u6570\u7c7b\u578b<br>auto lambda11 = [](int x, int y) { return x + y; };<br><br>\/\/ C++14 \u6cdb\u578b Lambda<br>auto lambda14 = [](auto x, auto y) { return x + y; };<br><br>\/\/ \u4f7f\u7528<br>int i = lambda14(3, 4);       \/\/ int \u7248\u672c<br>double d = lambda14(3.5, 4.5); \/\/ double \u7248\u672c<\/code><\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Lambda \u6355\u83b7\u8868\u8fbe\u5f0f<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>int x = 10;<br><br>\/\/ C++11 \u53ea\u80fd\u6355\u83b7\u53d8\u91cf<br>auto lambda11 = [x]() { return x; };<br><br>\/\/ C++14 \u53ef\u4ee5\u6355\u83b7\u8868\u8fbe\u5f0f\u7ed3\u679c<br>auto lambda14 = [value = x * 2]() { return value; };<\/code><\/pre>\n\n\n\n<p>\u4e09\u3001\u53d8\u91cf\u6a21\u677f<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>\/\/ C++11 \u53ea\u6709\u7c7b\u6a21\u677f\u548c\u51fd\u6570\u6a21\u677f<br>template&lt;typename T><br>constexpr T pi = T(3.1415926535897932385);<br><br>\/\/ \u4f7f\u7528<br>float f = pi&lt;float>;<br>double d = pi&lt;double>;<\/code><\/pre>\n\n\n\n<p>\u56db\u3001\u4e8c\u8fdb\u5236\u5b57\u9762\u91cf<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>int x = 0b101010; \/\/ \u4e8c\u8fdb\u5236\u8868\u793a\uff0c\u7b49\u4e8e\u5341\u8fdb\u5236\u768442<\/code><\/pre>\n\n\n\n<p>\u4e94\u3001\u6570\u5b57\u5206\u9694\u7b26<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>int million = 1'000'000;<br>double pi = 3.141'592'653'589'793;<\/code><\/pre>\n\n\n\n<p>\u516d\u3001<code>[[deprecated]]<\/code> \u5c5e\u6027<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>[[deprecated(\"Use new_func() instead\")]]<br>void old_func() {}<br><br>\/\/ \u4f7f\u7528\u65f6\u7f16\u8bd1\u5668\u4f1a\u53d1\u51fa\u8b66\u544a<br>old_func();<\/code><\/pre>\n\n\n\n<p>\u4e03\u3001<code>constexpr<\/code> \u51fd\u6570\u589e\u5f3a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5141\u8bb8\u5c40\u90e8\u53d8\u91cf\u548c\u5faa\u73af<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>constexpr int factorial(int n) {<br>    int result = 1;<br>    for (int i = 1; i &lt;= n; ++i) {<br>        result *= i;<br>    }<br>    return result;<br>}<br><br>constexpr int fact5 = factorial(5); \/\/ 120<\/code><\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u5141\u8bb8 <code>if<\/code> \u8bed\u53e5<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>constexpr bool is_even(int x) {<br>    if (x % 2 == 0) {<br>        return true;<br>    } else {<br>        return false;<br>    }<br>}<\/code><\/pre>\n\n\n\n<p>\u516b\u3001<code>std::make_unique<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>#include &lt;memory><br><br>\/\/ C++11 \u53ea\u6709 std::make_shared<br>auto sp = std::make_shared&lt;int>(42);<br><br>\/\/ C++14 \u65b0\u589e std::make_unique<br>auto up = std::make_unique&lt;int>(42);<\/code><\/pre>\n\n\n\n<p>\u4e5d\u3001<code>std::integer_sequence<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>#include &lt;utility><br><br>template&lt;typename T, T... Ints><br>void print_sequence(std::integer_sequence&lt;T, Ints...>) {<br>    ((std::cout &lt;&lt; Ints &lt;&lt; ' '), ...); \/\/ C++17 \u6298\u53e0\u8868\u8fbe\u5f0f<br>}<br><br>\/\/ \u4f7f\u7528<br>print_sequence(std::integer_sequence&lt;int, 1, 2, 3>{}); \/\/ \u8f93\u51fa: 1 2 3<\/code><\/pre>\n\n\n\n<p>\u5341\u3001<code>std::exchange<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>#include &lt;utility><br><br>int x = 10;<br>int old = std::exchange(x, 20); \/\/ old=10, x=20<\/code><\/pre>\n\n\n\n<p>\u5341\u4e00\u3001<code>std::quoted<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>#include &lt;iomanip><br>#include &lt;string><br><br>std::string s = \"Hello\";<br>std::cout &lt;&lt; std::quoted(s); \/\/ \u8f93\u51fa: \"Hello\"<\/code><\/pre>\n\n\n\n<p>\u5341\u4e8c\u3001<code>std::shared_timed_mutex<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>#include &lt;shared_mutex><br><br>std::shared_timed_mutex mtx;<br><br>\/\/ \u8bfb\u9501\uff08\u5171\u4eab\u9501\uff09<br>{<br>    std::shared_lock&lt;std::shared_timed_mutex> lock(mtx);<br>    \/\/ \u8bfb\u53d6\u64cd\u4f5c<br>}<br><br>\/\/ \u5199\u9501\uff08\u72ec\u5360\u9501\uff09<br>{<br>    std::unique_lock&lt;std::shared_timed_mutex> lock(mtx);<br>    \/\/ \u5199\u5165\u64cd\u4f5c<br>}<\/code><\/pre>\n\n\n\n<p>\u5341\u4e09\u3001<code>std::cbegin<\/code>\/<code>std::cend<\/code> \u7b49<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>#include &lt;vector>\n#include &lt;iterator>\n\nstd::vector&lt;int> v = {1, 2, 3};\n\n\/\/ C++11 \u65b9\u5f0f\nauto it11 = v.cbegin();\n\n\/\/ C++14 \u66f4\u901a\u7528\u7684\u65b9\u5f0f\nauto it14 = std::cbegin(v);<\/code><\/code><\/pre>\n\n\n\n<p>\u5341\u56db\u3001\u805a\u5408\u6210\u5458\u521d\u59cb\u5316<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>struct Point {\n    int x, y;\n};\n\n\/\/ C++11 \u9700\u8981\u6784\u9020\u51fd\u6570\u6216\u521d\u59cb\u5316\u5217\u8868\nPoint p1{1, 2};\n\n\/\/ C++14 \u53ef\u4ee5\u76f4\u63a5\u521d\u59cb\u5316\nPoint p2{1}; \/\/ p2.x=1, p2.y=0<\/code><\/code><\/pre>\n\n\n\n<p>\u5341\u4e94\u3001<code>std::tuple<\/code> \u5143\u7d20\u8bbf\u95ee<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>#include &lt;tuple>\n\nauto t = std::make_tuple(1, 2.5, \"hello\");\n\n\/\/ C++11 \u53ea\u80fd\u901a\u8fc7 std::get&lt;index>\nint x = std::get&lt;0>(t);\n\n\/\/ C++14 \u53ef\u4ee5\u901a\u8fc7\u7c7b\u578b\u83b7\u53d6\ndouble d = std::get&lt;double>(t); \/\/ \u83b7\u53d6 double \u7c7b\u578b\u7684\u5143\u7d20<\/code><\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u4e00\u3001\u51fd\u6570\u8fd4\u56de\u7c7b\u578b\u63a8\u5bfc\u589e\u5f3a \/\/ C++11 \u9700\u8981\u5c3e\u7f6e\u8fd4\u56de\u7c7b\u578bauto add(int a, int b) -> [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1021,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[153],"tags":[154],"class_list":["post-1016","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cpp","tag-cpp"],"_links":{"self":[{"href":"https:\/\/beijian99.top\/index.php?rest_route=\/wp\/v2\/posts\/1016","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/beijian99.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/beijian99.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/beijian99.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/beijian99.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1016"}],"version-history":[{"count":2,"href":"https:\/\/beijian99.top\/index.php?rest_route=\/wp\/v2\/posts\/1016\/revisions"}],"predecessor-version":[{"id":1018,"href":"https:\/\/beijian99.top\/index.php?rest_route=\/wp\/v2\/posts\/1016\/revisions\/1018"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/beijian99.top\/index.php?rest_route=\/wp\/v2\/media\/1021"}],"wp:attachment":[{"href":"https:\/\/beijian99.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1016"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/beijian99.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1016"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/beijian99.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}