Skip to content

Commit 7344d97

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent 013ff7b commit 7344d97

File tree

3 files changed

+118
-47
lines changed

3 files changed

+118
-47
lines changed

reference/functional/move_only_function.html

Lines changed: 39 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;header&#34;: [&#34;functional&#34;], &#34;id-type&#34;: [&#34;class template&#34;], &#34;namespace&#34;: [&#34;std&#34;], &#34;cpp&#34;: [&#34;cpp23&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;9ee88f0c690223f3bed3909174616292c6684878&#34;, &#34;source&#34;: &#34;#include &lt;functional&gt;\n#include &lt;iostream&gt;\n\nint add(int x) { return x + 1; }\n\nint main()\n{\n // \u95a2\u6570\u3092\u4ee3\u5165\n std::move_only_function&lt;int(int)&gt; f = add;\n\n // \u95a2\u6570\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4ee3\u5165\n f = [](int x) { return x + 1; };\n\n // \u4fdd\u6301\u3057\u3066\u3044\u308b\u95a2\u6570\u3092\u547c\u3073\u51fa\u3059\n int result = f(1);\n std::cout &lt;&lt; result &lt;&lt; std::endl;\n}\n&#34;}, {&#34;id&#34;: &#34;9826382066b9b7b508fd901f1784aa5aa8c828fd&#34;, &#34;source&#34;: &#34;#include &lt;functional&gt;\n#include &lt;iostream&gt;\n#include &lt;string&gt;\n#include &lt;utility&gt;\n\nstruct Functor {\n std::string operator()() &amp; {\n return \&#34;L-val\&#34;;\n }\n std::string operator()() &amp;&amp; {\n return \&#34;R-val\&#34;;\n }\n};\n\nint main()\n{\n std::cout &lt;&lt; \&#34;-- move_only_function\&#34; &lt;&lt; std::endl;\n std::move_only_function&lt;std::string(void)&gt; mof1 = Functor{};\n std::move_only_function&lt;std::string(void) &amp;&amp;&gt; mof2 = Functor{};\n std::cout &lt;&lt; \&#34;mof1/L-val: \&#34; &lt;&lt; mof1() &lt;&lt; std::endl;\n std::cout &lt;&lt; \&#34;mof1/R-val: \&#34; &lt;&lt; std::move(mof1)() &lt;&lt; std::endl;\n//std::cout &lt;&lt; \&#34;mof2/L-val: \&#34; &lt;&lt; mof2() &lt;&lt; std::endl; // \u4e0d\u9069\u683c\n std::cout &lt;&lt; \&#34;mof2/R-val: \&#34; &lt;&lt; std::move(mof2)() &lt;&lt; std::endl;\n\n std::cout &lt;&lt; \&#34;-- function\&#34; &lt;&lt; std::endl;\n std::function&lt;std::string(void)&gt; fn1 = Functor{};\n//std::function&lt;std::string(void) &amp;&amp;&gt; fn2 = Functor{}; // \u4e0d\u9069\u683c\n std::cout &lt;&lt; \&#34;fn1/L-val: \&#34; &lt;&lt; fn1() &lt;&lt; std::endl;\n std::cout &lt;&lt; \&#34;fn1/R-val: \&#34; &lt;&lt; std::move(fn1)() &lt;&lt; std::endl;\n}\n&#34;}, {&#34;id&#34;: &#34;b6de2fb1b5c947f9b4dd2f26b02e38b1cc493d75&#34;, &#34;source&#34;: &#34;#include &lt;functional&gt;\n\nvoid func() {}\nvoid func_noex() noexcept {}\n\nint main()\n{\n std::move_only_function&lt;void(void)&gt; mof1 = func;\n std::move_only_function&lt;void(void)&gt; mof2 = func_noex;\n//std::move_only_function&lt;void(void) noexcept&gt; mof3 = func; // \u4e0d\u9069\u683c\n std::move_only_function&lt;void(void) noexcept&gt; mof4 = func_noex;\n static_assert(not noexcept(mof1()));\n static_assert(not noexcept(mof2()));\n static_assert( noexcept(mof4()));\n\n std::function&lt;void(void)&gt; fn1 = func;\n std::function&lt;void(void)&gt; fn2 = func_noex;\n//std::function&lt;void(void) noexcept&gt; fn3 = func; // \u4e0d\u9069\u683c\n//std::function&lt;void(void) noexcept&gt; fn4 = func_noex; // \u4e0d\u9069\u683c\n static_assert(not noexcept(fn1()));\n static_assert(not noexcept(fn2()));\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;functional&#34;, &#34;move_only_function&#34;]}">
71+
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;functional&#34;], &#34;id-type&#34;: [&#34;class template&#34;], &#34;namespace&#34;: [&#34;std&#34;], &#34;cpp&#34;: [&#34;cpp23&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;9ee88f0c690223f3bed3909174616292c6684878&#34;, &#34;source&#34;: &#34;#include &lt;functional&gt;\n#include &lt;iostream&gt;\n\nint add(int x) { return x + 1; }\n\nint main()\n{\n // \u95a2\u6570\u3092\u4ee3\u5165\n std::move_only_function&lt;int(int)&gt; f = add;\n\n // \u95a2\u6570\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4ee3\u5165\n f = [](int x) { return x + 1; };\n\n // \u4fdd\u6301\u3057\u3066\u3044\u308b\u95a2\u6570\u3092\u547c\u3073\u51fa\u3059\n int result = f(1);\n std::cout &lt;&lt; result &lt;&lt; std::endl;\n}\n&#34;}, {&#34;id&#34;: &#34;9826382066b9b7b508fd901f1784aa5aa8c828fd&#34;, &#34;source&#34;: &#34;#include &lt;functional&gt;\n#include &lt;iostream&gt;\n#include &lt;string&gt;\n#include &lt;utility&gt;\n\nstruct Functor {\n std::string operator()() &amp; {\n return \&#34;L-val\&#34;;\n }\n std::string operator()() &amp;&amp; {\n return \&#34;R-val\&#34;;\n }\n};\n\nint main()\n{\n std::cout &lt;&lt; \&#34;-- move_only_function\&#34; &lt;&lt; std::endl;\n std::move_only_function&lt;std::string(void)&gt; mof1 = Functor{};\n std::move_only_function&lt;std::string(void) &amp;&amp;&gt; mof2 = Functor{};\n std::cout &lt;&lt; \&#34;mof1/L-val: \&#34; &lt;&lt; mof1() &lt;&lt; std::endl;\n std::cout &lt;&lt; \&#34;mof1/R-val: \&#34; &lt;&lt; std::move(mof1)() &lt;&lt; std::endl;\n//std::cout &lt;&lt; \&#34;mof2/L-val: \&#34; &lt;&lt; mof2() &lt;&lt; std::endl; // \u4e0d\u9069\u683c\n std::cout &lt;&lt; \&#34;mof2/R-val: \&#34; &lt;&lt; std::move(mof2)() &lt;&lt; std::endl;\n\n std::cout &lt;&lt; \&#34;-- function\&#34; &lt;&lt; std::endl;\n std::function&lt;std::string(void)&gt; fn1 = Functor{};\n//std::function&lt;std::string(void) &amp;&amp;&gt; fn2 = Functor{}; // \u4e0d\u9069\u683c\n std::cout &lt;&lt; \&#34;fn1/L-val: \&#34; &lt;&lt; fn1() &lt;&lt; std::endl;\n std::cout &lt;&lt; \&#34;fn1/R-val: \&#34; &lt;&lt; std::move(fn1)() &lt;&lt; std::endl;\n}\n&#34;}, {&#34;id&#34;: &#34;b6de2fb1b5c947f9b4dd2f26b02e38b1cc493d75&#34;, &#34;source&#34;: &#34;#include &lt;functional&gt;\n\nvoid func() {}\nvoid func_noex() noexcept {}\n\nint main()\n{\n std::move_only_function&lt;void(void)&gt; mof1 = func;\n std::move_only_function&lt;void(void)&gt; mof2 = func_noex;\n//std::move_only_function&lt;void(void) noexcept&gt; mof3 = func; // \u4e0d\u9069\u683c\n std::move_only_function&lt;void(void) noexcept&gt; mof4 = func_noex;\n static_assert(not noexcept(mof1()));\n static_assert(not noexcept(mof2()));\n static_assert( noexcept(mof4()));\n\n std::function&lt;void(void)&gt; fn1 = func;\n std::function&lt;void(void)&gt; fn2 = func_noex;\n//std::function&lt;void(void) noexcept&gt; fn3 = func; // \u4e0d\u9069\u683c\n//std::function&lt;void(void) noexcept&gt; fn4 = func_noex; // \u4e0d\u9069\u683c\n static_assert(not noexcept(fn1()));\n static_assert(not noexcept(fn2()));\n}\n&#34;}, {&#34;id&#34;: &#34;c5c05f31a5c92a8655df0661b8dd9038684e828c&#34;, &#34;source&#34;: &#34;#include &lt;functional&gt;\n#include &lt;iostream&gt;\n#include &lt;memory&gt;\n#include &lt;utility&gt;\n\n// \u30e0\u30fc\u30d6\u30aa\u30f3\u30ea\u30fc\u306e\u95a2\u6570\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30af\u30e9\u30b9\nstruct UniqueInt {\n std::unique_ptr&lt;int&gt; ptr;\n\n void operator()(void) {\n std::cout &lt;&lt; *ptr &lt;&lt; std::endl;\n }\n};\n\nint main()\n{\n UniqueInt ui = {std::make_unique&lt;int&gt;(42)};\n\n // \u30b3\u30f3\u30d1\u30a4\u30eb\u30a8\u30e9\u30fc\uff01\n // std::function\u306f\u30e0\u30fc\u30d6\u30aa\u30f3\u30ea\u30fc\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u683c\u7d0d\u3067\u304d\u306a\u3044\n// std::function&lt;void(void)&gt; f = std::move(ui);\n\n // OK\n // std::move_only_function\u306a\u3089\u683c\u7d0d\u53ef\u80fd\n std::move_only_function&lt;void(void)&gt; f = std::move(ui);\n\n f();\n}\n&#34;}], &#34;page_id&#34;: [&#34;reference&#34;, &#34;functional&#34;, &#34;move_only_function&#34;]}">
7272
<nav class="navbar navbar-default" role="navigation">
7373
<div class="container-fluid">
7474
<div class="navbar-header">
@@ -188,12 +188,12 @@
188188

189189
<p class="text-right"><small>
190190
最終更新日時(UTC):
191-
<span itemprop="datePublished" content="2024-06-11T13:45:38">
192-
2024年06月11日 13時45分38秒
191+
<span itemprop="datePublished" content="2025-06-21T11:23:17">
192+
2025年06月21日 11時23分17秒
193193
</span>
194194
<br/>
195195
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
196-
<span itemprop="name">Akira Takahashi</span>
196+
<span itemprop="name">suomesta</span>
197197
</span>
198198
が更新
199199
</small></p>
@@ -473,6 +473,40 @@ <h3>例4: noexcept指定の伝搬</h3>
473473
</div></p>
474474
<h4>出力</h4>
475475
<p><pre><code></code></pre></p>
476+
<h3>例5: ムーブオンリーオブジェクト</h3>
477+
<p><div class="yata" id="c5c05f31a5c92a8655df0661b8dd9038684e828c"><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><a href="../functional.html">&lt;functional&gt;</a></span><span class="cp"></span>
478+
<span class="cp">#include</span> <span class="cpf"><a href="../iostream.html">&lt;iostream&gt;</a></span><span class="cp"></span>
479+
<span class="cp">#include</span> <span class="cpf"><a href="../memory.html">&lt;memory&gt;</a></span><span class="cp"></span>
480+
<span class="cp">#include</span> <span class="cpf"><a href="../utility.html">&lt;utility&gt;</a></span><span class="cp"></span>
481+
482+
<span class="c1">// ムーブオンリーの関数オブジェクトクラス</span>
483+
<span class="k">struct</span> <span class="n">UniqueInt</span> <span class="p">{</span>
484+
<span class="n"><a href="../memory/unique_ptr.html">std::unique_ptr</a></span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">ptr</span><span class="p">;</span>
485+
486+
<span class="kt">void</span> <span class="nf">operator</span><span class="p">()(</span><span class="kt">void</span><span class="p">)</span> <span class="p">{</span>
487+
<span class="n"><a href="../iostream/cout.html">std::cout</a></span> <span class="o">&lt;&lt;</span> <span class="o">*</span><span class="n">ptr</span> <span class="o">&lt;&lt;</span> <span class="n"><a href="../ostream/endl.html">std::endl</a></span><span class="p">;</span>
488+
<span class="p">}</span>
489+
<span class="p">};</span>
490+
491+
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
492+
<span class="p">{</span>
493+
<span class="n">UniqueInt</span> <span class="n">ui</span> <span class="o">=</span> <span class="p">{</span><span class="n"><a href="../memory/make_unique.html">std::make_unique</a></span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="p">(</span><span class="mi">42</span><span class="p">)};</span>
494+
495+
<span class="c1">// コンパイルエラー!</span>
496+
<span class="c1">// std::functionはムーブオンリーオブジェクトを格納できない</span>
497+
<span class="c1">// <a href="function.html">std::function&lt;void(void)&gt;</a> f = <a href="../utility/move.html">std::move</a>(ui);</span>
498+
499+
<span class="c1">// OK</span>
500+
<span class="c1">// std::move_only_functionなら格納可能</span>
501+
<span class="n"><span style="color:#ff0000">std::move_only_function&lt;void(void)&gt;</span></span> <span class="n">f</span> <span class="o">=</span> <span class="n"><a href="../utility/move.html">std::move</a></span><span class="p">(</span><span class="n">ui</span><span class="p">);</span>
502+
503+
<span class="n">f</span><span class="p">();</span>
504+
<span class="p">}</span>
505+
</code></pre></div>
506+
</div></p>
507+
<h4>出力</h4>
508+
<p><pre><code>42
509+
</code></pre></p>
476510
<h2>バージョン</h2>
477511
<h3>言語</h3>
478512
<ul>
@@ -489,7 +523,7 @@ <h2>関連項目</h2>
489523
<ul>
490524
<li>C++11 <code><a href="function.html">function</a></code></li>
491525
<li>C++26 <code><a href="copyable_function.html">copyable_function</a></code></li>
492-
<li>C++26 <code><a href="copyable_function.html">copyable_function</a></code></li>
526+
<li>C++26 <code><a href="function_ref.html">function_ref</a></code></li>
493527
</ul>
494528
<h2>参照</h2>
495529
<ul>

rss.xml

Lines changed: 78 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,86 @@
22
<feed xmlns="http://www.w3.org/2005/Atom">
33
<title>cpprefjp - C++日本語リファレンス</title>
44
<link href="https://cpprefjp.github.io" />
5-
<updated>2025-06-20T14:47:22.910900</updated>
6-
<id>ff809207-c046-4d77-a32c-e4e2ceba1618</id>
5+
<updated>2025-06-21T11:27:29.012775</updated>
6+
<id>4ae47d72-8dd2-4e5a-92b8-999bb70bbd59</id>
77

88

9+
<entry>
10+
<title>move_only_function -- improve std::move_only_function</title>
11+
<link href="https://cpprefjp.github.io/reference/functional/move_only_function.html"/>
12+
<id>a9d264c4ed2ba86f5949f89923bf17ff8e4bcccc:reference/functional/move_only_function.md</id>
13+
<updated>2025-06-21T20:23:17+09:00</updated>
14+
15+
<summary type="html">&lt;pre&gt;&lt;code&gt;diff --git a/reference/functional/move_only_function.md b/reference/functional/move_only_function.md
16+
index 66ccd0b1b..ab24a4fc6 100644
17+
--- a/reference/functional/move_only_function.md
18+
+++ b/reference/functional/move_only_function.md
19+
@@ -222,6 +222,48 @@ int main()
20+
```
21+
```
22+
23+
+### 例5: ムーブオンリーオブジェクト
24+
+```cpp example
25+
+#include &amp;lt;functional&amp;gt;
26+
+#include &amp;lt;iostream&amp;gt;
27+
+#include &amp;lt;memory&amp;gt;
28+
+#include &amp;lt;utility&amp;gt;
29+
+
30+
+// ムーブオンリーの関数オブジェクトクラス
31+
+struct UniqueInt {
32+
+ std::unique_ptr&amp;lt;int&amp;gt; ptr;
33+
+
34+
+ void operator()(void) {
35+
+ std::cout &amp;lt;&amp;lt; *ptr &amp;lt;&amp;lt; std::endl;
36+
+ }
37+
+};
38+
+
39+
+int main()
40+
+{
41+
+ UniqueInt ui = {std::make_unique&amp;lt;int&amp;gt;(42)};
42+
+
43+
+ // コンパイルエラー!
44+
+ // std::functionはムーブオンリーオブジェクトを格納できない
45+
+// std::function&amp;lt;void(void)&amp;gt; f = std::move(ui);
46+
+
47+
+ // OK
48+
+ // std::move_only_functionなら格納可能
49+
+ std::move_only_function&amp;lt;void(void)&amp;gt; f = std::move(ui);
50+
+
51+
+ f();
52+
+}
53+
+```
54+
+* std::move_only_function&amp;lt;void(void)&amp;gt;[color ff0000]
55+
+* std::function&amp;lt;void(void)&amp;gt;[link /reference/functional/function.md]
56+
+* std::unique_ptr[link /reference/memory/unique_ptr.md]
57+
+* std::make_unique[link /reference/memory/make_unique.md]
58+
+* std::move[link /reference/utility/move.md]
59+
+
60+
+#### 出力
61+
+```
62+
+42
63+
+```
64+
+
65+
66+
## バージョン
67+
### 言語
68+
@@ -237,7 +279,7 @@ int main()
69+
## 関連項目
70+
- C++11 [`function`](function.md)
71+
- C++26 [`copyable_function`](copyable_function.md)
72+
-- C++26 [`copyable_function`](copyable_function.md)
73+
+- C++26 [`function_ref`](function_ref.md)
74+
75+
76+
## 参照
77+
&lt;/code&gt;&lt;/pre&gt;</summary>
78+
79+
<author>
80+
<name>suomesta</name>
81+
<email>[email protected]</email>
82+
</author>
83+
</entry>
84+
985
<entry>
1086
<title>operator&lt;&lt; -- C++ のコードブロックに cpp を追加</title>
1187
<link href="https://cpprefjp.github.io/reference/complex/complex/op_ostream.html"/>
@@ -846,43 +922,4 @@ index 9b4d1be4f..b046fa0b7 100644
846922
</author>
847923
</entry>
848924

849-
<entry>
850-
<title>read_env -- improve std::execution::read_env()</title>
851-
<link href="https://cpprefjp.github.io/reference/execution/execution/read_env.html"/>
852-
<id>10d613142bb65190d6d5c25169d768e0d2bbf10d:reference/execution/execution/read_env.md</id>
853-
<updated>2025-06-17T20:00:32+09:00</updated>
854-
855-
<summary type="html">&lt;pre&gt;&lt;code&gt;diff --git a/reference/execution/execution/read_env.md b/reference/execution/execution/read_env.md
856-
index d494bedbd..db4146dee 100644
857-
--- a/reference/execution/execution/read_env.md
858-
+++ b/reference/execution/execution/read_env.md
859-
@@ -67,9 +67,9 @@ int main()
860-
* ex::read_env[color ff0000]
861-
* ex::sender[link sender.md]
862-
* ex::get_scheduler[link get_scheduler.md]
863-
-* ex::let_value[lin let_value.md]
864-
+* ex::let_value[link let_value.md]
865-
* ex::starts_on[link starts_on.md]
866-
-* ex::just[lin just.md]
867-
+* ex::just[link just.md]
868-
* std::this_thread::sync_wait[link ../this_thread/sync_wait.md]
869-
* value()[link /reference/optional/optional/value.md]
870-
871-
@@ -91,7 +91,7 @@ int main()
872-
873-
874-
## 関連項目
875-
-- [`execution::get_env`](read_env.md)
876-
+- [`execution::get_env`](get_env.md)
877-
878-
879-
## 参照
880-
&lt;/code&gt;&lt;/pre&gt;</summary>
881-
882-
<author>
883-
<name>suomesta</name>
884-
<email>[email protected]</email>
885-
</author>
886-
</entry>
887-
888925
</feed>

sitemap.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6905,7 +6905,7 @@
69056905

69066906
<url>
69076907
<loc>https://cpprefjp.github.io/reference/functional/move_only_function.html</loc>
6908-
<lastmod>2025-04-03T12:32:11+09:00</lastmod>
6908+
<lastmod>2025-06-21T20:23:17+09:00</lastmod>
69096909
<changefreq>daily</changefreq>
69106910
<priority>0.7</priority>
69116911
</url>

0 commit comments

Comments
 (0)