Skip to content

Commit 0d11ff9

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent f5f1fb8 commit 0d11ff9

323 files changed

Lines changed: 10604 additions & 2647 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

article/lib/at_thread_exit.html

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868

6969
</head>
7070
<body>
71-
<header data-kunai-mdinfo="{&#34;meta&#34;: {}, &#34;sources&#34;: [{&#34;id&#34;: &#34;171e623d248d83490f9f10888099cc4ccbfdcc88&#34;, &#34;source&#34;: &#34;#include &lt;type_traits&gt;\n#include &lt;future&gt;\n#include &lt;thread&gt;\n#include &lt;iostream&gt;\n\ntemplate&lt;class F&gt;\nstd::future&lt;typename std::result_of&lt;F()&gt;::type&gt; spawn_task(F f) {\n using result_type = typename std::result_of&lt;F()&gt;::type;\n std::packaged_task&lt;result_type ()&gt; task(std::move(f));\n std::future&lt;result_type&gt; future(task.get_future());\n std::thread th(std::move(task));\n th.detach();\n return future;\n}\n\n\nstruct Hoge {\n ~Hoge() { std::cout &lt;&lt; \&#34;Hoge destructor\&#34; &lt;&lt; std::endl; }\n};\n\nint f() {\n thread_local Hoge h;\n return 42;\n}\n\nint main() {\n std::future&lt;int&gt; res(spawn_task(f));\n std::cout &lt;&lt; res.get() &lt;&lt; std::endl;\n}\n&#34;}, {&#34;id&#34;: &#34;af87758ee2bf0e113465ddcd28c0cff86e7107c1&#34;, &#34;source&#34;: &#34;#include &lt;type_traits&gt;\n#include &lt;future&gt;\n#include &lt;thread&gt;\n#include &lt;iostream&gt;\n\nstruct task_executor\n{\n template &lt;class R&gt;\n void operator()( std::packaged_task&lt;R&gt; task )\n {\n task.make_ready_at_thread_exit(); // operator() \u3092\u547c\u3073\u51fa\u3059\u4ee3\u308f\u308a\u306b make_ready_at_thread_exit() \u3092\u547c\u3073\u51fa\u3059\u3002\n }\n};\n\ntemplate&lt;class F&gt;\nstd::future&lt;typename std::result_of&lt;F()&gt;::type&gt; spawn_task(F f) {\n using result_type = typename std::result_of&lt;F()&gt;::type;\n std::packaged_task&lt;result_type ()&gt; task(std::move(f));\n std::future&lt;result_type&gt; future(task.get_future());\n std::thread th(task_executor{}, std::move(task));\n th.detach();\n return future;\n}\n\n\nstruct Hoge {\n ~Hoge() { std::cout &lt;&lt; \&#34;Hoge destructor\&#34; &lt;&lt; std::endl; }\n};\n\nint f() {\n thread_local Hoge h;\n return 42;\n}\n\nint main() {\n std::future&lt;int&gt; res(spawn_task(f));\n std::cout &lt;&lt; res.get() &lt;&lt; std::endl;\n}\n&#34;}], &#34;page_id&#34;: [&#34;article&#34;, &#34;lib&#34;, &#34;at_thread_exit&#34;]}">
71+
<header data-kunai-mdinfo="{&#34;meta&#34;: {}, &#34;sources&#34;: [{&#34;id&#34;: &#34;36de3598712b6d4574b5ace8fa054d28b583c11f&#34;, &#34;source&#34;: &#34;#include &lt;type_traits&gt;\n#include &lt;future&gt;\n#include &lt;thread&gt;\n#include &lt;iostream&gt;\n#include &lt;utility&gt;\n\ntemplate&lt;class F&gt;\nstd::future&lt;typename std::result_of&lt;F()&gt;::type&gt; spawn_task(F f) {\n using result_type = typename std::result_of&lt;F()&gt;::type;\n std::packaged_task&lt;result_type ()&gt; task(std::move(f));\n std::future&lt;result_type&gt; future(task.get_future());\n std::thread th(std::move(task));\n th.detach();\n return future;\n}\n\n\nstruct Hoge {\n ~Hoge() { std::cout &lt;&lt; \&#34;Hoge destructor\&#34; &lt;&lt; std::endl; }\n};\n\nint f() {\n thread_local Hoge h;\n return 42;\n}\n\nint main() {\n std::future&lt;int&gt; res(spawn_task(f));\n std::cout &lt;&lt; res.get() &lt;&lt; std::endl;\n}\n&#34;}, {&#34;id&#34;: &#34;af87758ee2bf0e113465ddcd28c0cff86e7107c1&#34;, &#34;source&#34;: &#34;#include &lt;type_traits&gt;\n#include &lt;future&gt;\n#include &lt;thread&gt;\n#include &lt;iostream&gt;\n\nstruct task_executor\n{\n template &lt;class R&gt;\n void operator()( std::packaged_task&lt;R&gt; task )\n {\n task.make_ready_at_thread_exit(); // operator() \u3092\u547c\u3073\u51fa\u3059\u4ee3\u308f\u308a\u306b make_ready_at_thread_exit() \u3092\u547c\u3073\u51fa\u3059\u3002\n }\n};\n\ntemplate&lt;class F&gt;\nstd::future&lt;typename std::result_of&lt;F()&gt;::type&gt; spawn_task(F f) {\n using result_type = typename std::result_of&lt;F()&gt;::type;\n std::packaged_task&lt;result_type ()&gt; task(std::move(f));\n std::future&lt;result_type&gt; future(task.get_future());\n std::thread th(task_executor{}, std::move(task));\n th.detach();\n return future;\n}\n\n\nstruct Hoge {\n ~Hoge() { std::cout &lt;&lt; \&#34;Hoge destructor\&#34; &lt;&lt; std::endl; }\n};\n\nint f() {\n thread_local Hoge h;\n return 42;\n}\n\nint main() {\n std::future&lt;int&gt; res(spawn_task(f));\n std::cout &lt;&lt; res.get() &lt;&lt; std::endl;\n}\n&#34;}], &#34;page_id&#34;: [&#34;article&#34;, &#34;lib&#34;, &#34;at_thread_exit&#34;]}">
7272
<nav class="navbar navbar-default" role="navigation">
7373
<div class="container-fluid">
7474
<div class="navbar-header">
@@ -187,12 +187,12 @@
187187
<p class="text-right"><small>
188188
最終更新日時:
189189
<time itemprop="datePublished" class="js-local-time"
190-
datetime="2025-07-12T02:16:44+09:00">
191-
2025年07月12日 02時16分44秒 (JST)
190+
datetime="2026-07-22T16:08:23+09:00">
191+
2026年07月22日 16時08分23秒 (JST)
192192
</time>
193193
<br/>
194194
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
195-
<span itemprop="name">Koichi Murase</span>
195+
<span itemprop="name">rotarymars</span>
196196
</span>
197197
が更新
198198
</small></p>
@@ -262,10 +262,11 @@ <h1 itemprop="name"><span class="token">_at_thread_exit系の関数が存在し
262262
<p>デタッチされたスレッドにおいて、スレッドローカル記憶域にあるオブジェクトがいつ破棄されるかという規定は無い。
263263
そのため、<a class="cpprefjp-defined-word" data-desc="未定義の動作。処理系は予期せぬ動作をする可能性がある。要するに動作保証対象外。undefined behavior (UB)。" href="../../implementation-compliance.html#dfn-undefined-behavior">未定義動作</a>を含まずにこれらのオブジェクトを破棄するのは難しい。 </p>
264264
<p>例えば、以下のようなケースで問題になる。</p>
265-
<p><div class="yata" id="171e623d248d83490f9f10888099cc4ccbfdcc88"><div class="codehilite"><pre><span></span><code><span class="cp">#include <a href="../../reference/type_traits.html">&lt;type_traits&gt;</a></span>
265+
<p><div class="yata" id="36de3598712b6d4574b5ace8fa054d28b583c11f"><div class="codehilite"><pre><span></span><code><span class="cp">#include <a href="../../reference/type_traits.html">&lt;type_traits&gt;</a></span>
266266
<span class="cp">#include <a href="../../reference/future.html">&lt;future&gt;</a></span>
267267
<span class="cp">#include <a href="../../reference/thread.html">&lt;thread&gt;</a></span>
268268
<span class="cp">#include <a href="../../reference/iostream.html">&lt;iostream&gt;</a></span>
269+
<span class="cp">#include <a href="../../reference/utility.html">&lt;utility&gt;</a></span>
269270

270271
<span class="k">template</span><span class="o">&lt;</span><span class="k">class</span><span class="w"> </span><span class="nc">F</span><span class="o">&gt;</span>
271272
<span class="n">std</span><span class="o">::</span><span class="n">future</span><span class="o">&lt;</span><span class="k">typename</span><span class="w"> </span><span class="nc">std</span><span class="o">::</span><span class="n">result_of</span><span class="o">&lt;</span><span class="n">F</span><span class="p">()</span><span class="o">&gt;::</span><span class="n">type</span><span class="o">&gt;</span><span class="w"> </span><span class="n">spawn_task</span><span class="p">(</span><span class="n">F</span><span class="w"> </span><span class="n">f</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>

article/platform/locales.html

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868

6969
</head>
7070
<body>
71-
<header data-kunai-mdinfo="{&#34;meta&#34;: {}, &#34;sources&#34;: [{&#34;id&#34;: &#34;d4c18430c811fc58c9b326d33bf34a64d444e2dc&#34;, &#34;source&#34;: &#34;#include &lt;array&gt;\n#include &lt;codecvt&gt;\n#include &lt;iostream&gt;\n#include &lt;windows.h&gt;\n\nint main()\n{\n std::locale utf8(std::locale::classic(), new std::codecvt_utf8_utf16&lt;WCHAR, 0x10ffff, std::codecvt_mode::generate_header&gt;());\n std::wcout.imbue(utf8);\n ::EnumSystemLocalesEx([](LPWSTR localeName, DWORD /*flags*/, LPARAM lParam) {\n std::array&lt;WCHAR, 4&gt; language;\n ::GetLocaleInfoEx(localeName, LOCALE_SABBREVLANGNAME, language.data(), language.size());\n std::array&lt;WCHAR, 4&gt; country;\n ::GetLocaleInfoEx(localeName, LOCALE_SABBREVCTRYNAME, country.data(), country.size());\n std::array&lt;WCHAR, 64&gt; languageFull;\n ::GetLocaleInfoEx(localeName, LOCALE_SENGLISHLANGUAGENAME, languageFull.data(), languageFull.size());\n std::array&lt;WCHAR, 64&gt; countryFull;\n ::GetLocaleInfoEx(localeName, LOCALE_SENGLISHCOUNTRYNAME, countryFull.data(), countryFull.size());\n\n std::wcout &lt;&lt; language.data() &lt;&lt; L&#39;_&#39; &lt;&lt; country.data() &lt;&lt; L&#39;\\t&#39; &lt;&lt; languageFull.data() &lt;&lt; L&#39;_&#39; &lt;&lt; countryFull.data() &lt;&lt; std::endl;\n return TRUE;\n }, LOCALE_NEUTRALDATA, 0, nullptr);\n}\n&#34;}], &#34;page_id&#34;: [&#34;article&#34;, &#34;platform&#34;, &#34;locales&#34;]}">
71+
<header data-kunai-mdinfo="{&#34;meta&#34;: {}, &#34;sources&#34;: [{&#34;id&#34;: &#34;43cace2340b1e2ae9abde323ede1cf2162b31662&#34;, &#34;source&#34;: &#34;#include &lt;array&gt;\n#include &lt;codecvt&gt;\n#include &lt;iostream&gt;\n#include &lt;windows.h&gt;\n#include &lt;locale&gt;\n\nint main()\n{\n std::locale utf8(std::locale::classic(), new std::codecvt_utf8_utf16&lt;WCHAR, 0x10ffff, std::codecvt_mode::generate_header&gt;());\n std::wcout.imbue(utf8);\n ::EnumSystemLocalesEx([](LPWSTR localeName, DWORD /*flags*/, LPARAM lParam) {\n std::array&lt;WCHAR, 4&gt; language;\n ::GetLocaleInfoEx(localeName, LOCALE_SABBREVLANGNAME, language.data(), language.size());\n std::array&lt;WCHAR, 4&gt; country;\n ::GetLocaleInfoEx(localeName, LOCALE_SABBREVCTRYNAME, country.data(), country.size());\n std::array&lt;WCHAR, 64&gt; languageFull;\n ::GetLocaleInfoEx(localeName, LOCALE_SENGLISHLANGUAGENAME, languageFull.data(), languageFull.size());\n std::array&lt;WCHAR, 64&gt; countryFull;\n ::GetLocaleInfoEx(localeName, LOCALE_SENGLISHCOUNTRYNAME, countryFull.data(), countryFull.size());\n\n std::wcout &lt;&lt; language.data() &lt;&lt; L&#39;_&#39; &lt;&lt; country.data() &lt;&lt; L&#39;\\t&#39; &lt;&lt; languageFull.data() &lt;&lt; L&#39;_&#39; &lt;&lt; countryFull.data() &lt;&lt; std::endl;\n return TRUE;\n }, LOCALE_NEUTRALDATA, 0, nullptr);\n}\n&#34;}], &#34;page_id&#34;: [&#34;article&#34;, &#34;platform&#34;, &#34;locales&#34;]}">
7272
<nav class="navbar navbar-default" role="navigation">
7373
<div class="container-fluid">
7474
<div class="navbar-header">
@@ -187,12 +187,12 @@
187187
<p class="text-right"><small>
188188
最終更新日時:
189189
<time itemprop="datePublished" class="js-local-time"
190-
datetime="2019-12-20T05:04:48+09:00">
191-
2019年12月20日 05時04分48秒 (JST)
190+
datetime="2026-07-22T16:08:23+09:00">
191+
2026年07月22日 16時08分23秒 (JST)
192192
</time>
193193
<br/>
194194
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
195-
<span itemprop="name">yumetodo</span>
195+
<span itemprop="name">rotarymars</span>
196196
</span>
197197
が更新
198198
</small></p>
@@ -870,10 +870,11 @@ <h2>Windows 8 / Visual C++ 2012 Update 1 無印</h2>
870870
</tbody>
871871
</table>
872872
<p>使用したプログラム</p>
873-
<p><div class="yata" id="d4c18430c811fc58c9b326d33bf34a64d444e2dc"><div class="codehilite"><pre><span></span><code><span class="cp">#include <a href="../../reference/array.html">&lt;array&gt;</a></span>
873+
<p><div class="yata" id="43cace2340b1e2ae9abde323ede1cf2162b31662"><div class="codehilite"><pre><span></span><code><span class="cp">#include <a href="../../reference/array.html">&lt;array&gt;</a></span>
874874
<span class="cp">#include <a href="../../reference/codecvt.html">&lt;codecvt&gt;</a></span>
875875
<span class="cp">#include <a href="../../reference/iostream.html">&lt;iostream&gt;</a></span>
876876
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;windows.h&gt;</span>
877+
<span class="cp">#include <a href="../../reference/locale.html">&lt;locale&gt;</a></span>
877878

878879
<span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span>
879880
<span class="p">{</span>

0 commit comments

Comments
 (0)