Skip to content

Commit 7584f17

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent b3595e6 commit 7584f17

File tree

4 files changed

+37
-2355
lines changed

4 files changed

+37
-2355
lines changed

lang/cpp17/if_constexpr.html

Lines changed: 6 additions & 6 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;cpp&#34;: [&#34;cpp17&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;e71dc51e3c807c2d099833ca105af0209dae3458&#34;, &#34;source&#34;: &#34;#include &lt;type_traits&gt;\n\ntemplate &lt;typename T&gt;\nvoid f(T)\n{\n if constexpr (std::is_same_v&lt;T, int&gt;)\n {\n // T\u304cint\u306e\u3068\u304d\u306e\u307f\u8a55\u4fa1\u3055\u308c\u3066\u307b\u3057\u3044\n // \u5b9f\u969b\u306f\u5e38\u306b\u8a55\u4fa1\u3055\u308c\u308b\n static_assert(false);\n }\n}\n\nint main()\n{\n f(2.4);\n f(3);\n}\n&#34;}, {&#34;id&#34;: &#34;583ebd19262fed28c91d69f132fcbcae803ddce6&#34;, &#34;source&#34;: &#34;#include &lt;type_traits&gt;\n\ntemplate &lt;typename T&gt;\nconstexpr bool false_v = false;\n\ntemplate &lt;typename T&gt;\nvoid f(T)\n{\n if constexpr (std::is_same_v&lt;T, int&gt;)\n {\n // T\u304cint\u306e\u3068\u304d\u306e\u307f\u8a55\u4fa1\u3055\u308c\u308b\n static_assert(false_v&lt;T&gt;);\n }\n}\n\nint main()\n{\n f(2.4);\n f(3);\n}\n&#34;}, {&#34;id&#34;: &#34;bbd30e2c982d81f86d8e0b8fc3b99ee38278503f&#34;, &#34;source&#34;: &#34;#include &lt;type_traits&gt;\n\ntemplate &lt;typename T&gt;\nvoid f(T)\n{\n if constexpr (std::is_same_v&lt;T, int&gt;)\n {\n // T\u304cint\u306e\u3068\u304d\u306e\u307f\u8a55\u4fa1\u3055\u308c\u308b\n static_assert([]{return false;}());\n }\n}\n\nint main()\n{\n f(2.4);\n f(3);\n}\n&#34;}, {&#34;id&#34;: &#34;3c217d78906ba664474fe1211739a73dc4b7283a&#34;, &#34;source&#34;: &#34;#include &lt;type_traits&gt;\n#include &lt;iostream&gt;\n\nstruct Hoge {\n using type = int;\n};\n\ntemplate &lt;typename T&gt;\nvoid f()\n{\n if constexpr (std::is_same_v&lt;T::type, int&gt; || std::is_same_v&lt;T::value_type, int&gt;) {\n std::cout &lt;&lt; \&#34;is int\&#34; &lt;&lt; std::endl;\n }\n}\n\nint main()\n{\n f&lt;Hoge&gt;(); //error: Hoge::value_type\u306f\u5b58\u5728\u3057\u306a\u3044\u306e\u3067if constexpr\u6587\u306e\u6761\u4ef6\u5f0f\u304c\u30b3\u30f3\u30d1\u30a4\u30eb\u30a8\u30e9\u30fc\u306b\u306a\u308b\n}\n&#34;}, {&#34;id&#34;: &#34;1db62823aed0162ca08415e26147d292cbce36d2&#34;, &#34;source&#34;: &#34;#include &lt;cstdint&gt;\ntemplate &lt;class T&gt;\nvoid f(T t) {\n if constexpr (sizeof(T) == sizeof(std::int32_t)) {\n use(t);\n } else {\n static_assert(false, \&#34;must be 32bit\&#34;);\n }\n}\n\nvoid g(std::int8_t c) {\n std::int32_t n = 0;\n f(n); // OK: n\u306fstd::int32_t\u578b\u306a\u306e\u3067`use(t);`\u306e\u307b\u3046\u304c\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3055\u308c\u308b\u305f\u3081\u306b\u3001static_assert\u6587\u306f\u5ba3\u8a00\u3055\u308c\u306a\u3044\u3002\n f(c); // error: c\u306fstd::int8_t\u578b\u306a\u306e\u3067\u3001static_assert\u6587\u306f\u5ba3\u8a00\u3055\u308c\u3001\&#34;must be 32bit\&#34;\u3068\u30b3\u30f3\u30d1\u30a4\u30e9\u304c\u8a3a\u65ad\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\u3059\u308b\n}\n&#34;}, {&#34;id&#34;: &#34;474b034dc49c625edd965c985714c99002564ffc&#34;, &#34;source&#34;: &#34;#include &lt;type_traits&gt;\n#include &lt;random&gt;\n#include &lt;cstdint&gt;\n#include &lt;iostream&gt;\n\n// C++11\ntemplate&lt;typename Integer&gt;\nusing mt = typename std::conditional&lt;std::is_same&lt;Integer, std::uint32_t&gt;::value, std::mt19937, std::mt19937_64&gt;::type;\n\n// C++14\u4ee5\u964d\n// template&lt;typename Integer&gt;\n// using mt = std::conditional_t&lt;std::is_same&lt;Integer, std::uint32_t&gt;::value, std::mt19937, std::mt19937_64&gt;;\n\nint main()\n{\n mt&lt;std::uint32_t&gt; m1 {37};\n std::cout &lt;&lt; m1() &lt;&lt; std::endl;\n}\n&#34;}], &#34;page_id&#34;: [&#34;lang&#34;, &#34;cpp17&#34;, &#34;if_constexpr&#34;]}">
71+
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;cpp&#34;: [&#34;cpp17&#34;]}, &#34;sources&#34;: [{&#34;id&#34;: &#34;e71dc51e3c807c2d099833ca105af0209dae3458&#34;, &#34;source&#34;: &#34;#include &lt;type_traits&gt;\n\ntemplate &lt;typename T&gt;\nvoid f(T)\n{\n if constexpr (std::is_same_v&lt;T, int&gt;)\n {\n // T\u304cint\u306e\u3068\u304d\u306e\u307f\u8a55\u4fa1\u3055\u308c\u3066\u307b\u3057\u3044\n // \u5b9f\u969b\u306f\u5e38\u306b\u8a55\u4fa1\u3055\u308c\u308b\n static_assert(false);\n }\n}\n\nint main()\n{\n f(2.4);\n f(3);\n}\n&#34;}, {&#34;id&#34;: &#34;583ebd19262fed28c91d69f132fcbcae803ddce6&#34;, &#34;source&#34;: &#34;#include &lt;type_traits&gt;\n\ntemplate &lt;typename T&gt;\nconstexpr bool false_v = false;\n\ntemplate &lt;typename T&gt;\nvoid f(T)\n{\n if constexpr (std::is_same_v&lt;T, int&gt;)\n {\n // T\u304cint\u306e\u3068\u304d\u306e\u307f\u8a55\u4fa1\u3055\u308c\u308b\n static_assert(false_v&lt;T&gt;);\n }\n}\n\nint main()\n{\n f(2.4);\n f(3);\n}\n&#34;}, {&#34;id&#34;: &#34;bbd30e2c982d81f86d8e0b8fc3b99ee38278503f&#34;, &#34;source&#34;: &#34;#include &lt;type_traits&gt;\n\ntemplate &lt;typename T&gt;\nvoid f(T)\n{\n if constexpr (std::is_same_v&lt;T, int&gt;)\n {\n // T\u304cint\u306e\u3068\u304d\u306e\u307f\u8a55\u4fa1\u3055\u308c\u308b\n static_assert([]{return false;}());\n }\n}\n\nint main()\n{\n f(2.4);\n f(3);\n}\n&#34;}, {&#34;id&#34;: &#34;babd8abb29ae2e8d87d8740451c8ba13f4573333&#34;, &#34;source&#34;: &#34;#include &lt;type_traits&gt;\n#include &lt;iostream&gt;\n\nstruct Hoge {\n using type = int;\n};\n\ntemplate &lt;typename T&gt;\nvoid f()\n{\n if constexpr (std::is_same_v&lt;typename T::type, int&gt; || std::is_same_v&lt;typename T::value_type, int&gt;) {\n std::cout &lt;&lt; \&#34;is int\&#34; &lt;&lt; std::endl;\n }\n}\n\nint main()\n{\n f&lt;Hoge&gt;(); //error: Hoge::value_type\u306f\u5b58\u5728\u3057\u306a\u3044\u306e\u3067if constexpr\u6587\u306e\u6761\u4ef6\u5f0f\u304c\u30b3\u30f3\u30d1\u30a4\u30eb\u30a8\u30e9\u30fc\u306b\u306a\u308b\n}\n&#34;}, {&#34;id&#34;: &#34;1db62823aed0162ca08415e26147d292cbce36d2&#34;, &#34;source&#34;: &#34;#include &lt;cstdint&gt;\ntemplate &lt;class T&gt;\nvoid f(T t) {\n if constexpr (sizeof(T) == sizeof(std::int32_t)) {\n use(t);\n } else {\n static_assert(false, \&#34;must be 32bit\&#34;);\n }\n}\n\nvoid g(std::int8_t c) {\n std::int32_t n = 0;\n f(n); // OK: n\u306fstd::int32_t\u578b\u306a\u306e\u3067`use(t);`\u306e\u307b\u3046\u304c\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3055\u308c\u308b\u305f\u3081\u306b\u3001static_assert\u6587\u306f\u5ba3\u8a00\u3055\u308c\u306a\u3044\u3002\n f(c); // error: c\u306fstd::int8_t\u578b\u306a\u306e\u3067\u3001static_assert\u6587\u306f\u5ba3\u8a00\u3055\u308c\u3001\&#34;must be 32bit\&#34;\u3068\u30b3\u30f3\u30d1\u30a4\u30e9\u304c\u8a3a\u65ad\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\u3059\u308b\n}\n&#34;}, {&#34;id&#34;: &#34;474b034dc49c625edd965c985714c99002564ffc&#34;, &#34;source&#34;: &#34;#include &lt;type_traits&gt;\n#include &lt;random&gt;\n#include &lt;cstdint&gt;\n#include &lt;iostream&gt;\n\n// C++11\ntemplate&lt;typename Integer&gt;\nusing mt = typename std::conditional&lt;std::is_same&lt;Integer, std::uint32_t&gt;::value, std::mt19937, std::mt19937_64&gt;::type;\n\n// C++14\u4ee5\u964d\n// template&lt;typename Integer&gt;\n// using mt = std::conditional_t&lt;std::is_same&lt;Integer, std::uint32_t&gt;::value, std::mt19937, std::mt19937_64&gt;;\n\nint main()\n{\n mt&lt;std::uint32_t&gt; m1 {37};\n std::cout &lt;&lt; m1() &lt;&lt; std::endl;\n}\n&#34;}], &#34;page_id&#34;: [&#34;lang&#34;, &#34;cpp17&#34;, &#34;if_constexpr&#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="2025-07-08T15:33:39">
192-
2025年07月08日 15時33分39秒
191+
<span itemprop="datePublished" content="2025-09-18T07:22:34">
192+
2025年09月18日 07時22分34秒
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">Raclamusi</span>
197197
</span>
198198
が更新
199199
</small></p>
@@ -342,7 +342,7 @@ <h3>2段階名前探索における注意点</h3>
342342
</code></pre></div>
343343
</div></p>
344344
<p><code>constexpr if</code>文の条件式内は実体化が起きる。したがって実体化するとコンパイルエラーになるものは書いてはいけない。</p>
345-
<p><div class="yata" id="3c217d78906ba664474fe1211739a73dc4b7283a"><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><a href="../../reference/type_traits.html">&lt;type_traits&gt;</a></span><span class="cp"></span>
345+
<p><div class="yata" id="babd8abb29ae2e8d87d8740451c8ba13f4573333"><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><a href="../../reference/type_traits.html">&lt;type_traits&gt;</a></span><span class="cp"></span>
346346
<span class="cp">#include</span> <span class="cpf"><a href="../../reference/iostream.html">&lt;iostream&gt;</a></span><span class="cp"></span>
347347

348348
<span class="k">struct</span> <span class="n">Hoge</span> <span class="p">{</span>
@@ -352,7 +352,7 @@ <h3>2段階名前探索における注意点</h3>
352352
<span class="k">template</span> <span class="o">&lt;</span><span class="k">typename</span> <span class="n">T</span><span class="o">&gt;</span>
353353
<span class="kt">void</span> <span class="n">f</span><span class="p">()</span>
354354
<span class="p">{</span>
355-
<span class="k">if</span> <span class="k">constexpr</span> <span class="p">(</span><span class="n"><a href="../../reference/type_traits/is_same.html">std::is_same_v</a></span><span class="o">&lt;</span><span class="n">T</span><span class="o">::</span><span class="n">type</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="o">||</span> <span class="n"><a href="../../reference/type_traits/is_same.html">std::is_same_v</a></span><span class="o">&lt;</span><span class="n">T</span><span class="o">::</span><span class="n">value_type</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span><span class="p">)</span> <span class="p">{</span>
355+
<span class="k">if</span> <span class="k">constexpr</span> <span class="p">(</span><span class="n"><a href="../../reference/type_traits/is_same.html">std::is_same_v</a></span><span class="o">&lt;</span><span class="k">typename</span> <span class="n">T</span><span class="o">::</span><span class="n">type</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="o">||</span> <span class="n"><a href="../../reference/type_traits/is_same.html">std::is_same_v</a></span><span class="o">&lt;</span><span class="k">typename</span> <span class="n">T</span><span class="o">::</span><span class="n">value_type</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span><span class="p">)</span> <span class="p">{</span>
356356
<span class="n"><a href="../../reference/iostream/cout.html">std::cout</a></span> <span class="o">&lt;&lt;</span> <span class="s">"is int"</span> <span class="o">&lt;&lt;</span> <span class="n"><a href="../../reference/ostream/endl.html">std::endl</a></span><span class="p">;</span>
357357
<span class="p">}</span>
358358
<span class="p">}</span>

reference/chrono/make24.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ <h2>例</h2>
239239
<span class="n"><a href="../cassert/assert.html">assert</a></span><span class="p">(</span><span class="n"><span style="color:#ff0000">chrono::make24</span></span><span class="p">(</span><span class="n"><a href="duration/op_h.html">12h</a></span><span class="p">,</span> <span class="nb">false</span><span class="p">)</span> <span class="o">==</span> <span class="n"><a href="duration/op_h.html">0h</a></span><span class="p">);</span>
240240

241241
<span class="n"><a href="../cassert/assert.html">assert</a></span><span class="p">(</span><span class="n"><span style="color:#ff0000">chrono::make24</span></span><span class="p">(</span><span class="n"><a href="duration/op_h.html">12h</a></span><span class="p">,</span> <span class="nb">true</span><span class="p">)</span> <span class="o">==</span> <span class="n"><a href="duration/op_h.html">12h</a></span><span class="p">);</span>
242-
<span class="n"><a href="../cassert/assert.html">assert</a></span><span class="p">(</span><span class="n"><span style="color:#ff0000">chrono::make24</span></span><span class="p">(</span><span class="n"><a href="duration/op_h.html">1h</a></span><span class="p">,</span> <span class="nb">true</span><span class="p">)</span> <span class="o">==</span> <span class="mf">1F</span><span class="n">nRMbMpZWgshcHNAwxZICAgZzRagrdnc</span><span class="p">);</span>
242+
<span class="n"><a href="../cassert/assert.html">assert</a></span><span class="p">(</span><span class="n"><span style="color:#ff0000">chrono::make24</span></span><span class="p">(</span><span class="n"><a href="duration/op_h.html">1h</a></span><span class="p">,</span> <span class="nb">true</span><span class="p">)</span> <span class="o">==</span> <span class="mf">1F</span><span class="n">TCDoQBCJSNBoubVKYvzPiZsxuIRZxOG</span><span class="p">);</span>
243243
<span class="n"><a href="../cassert/assert.html">assert</a></span><span class="p">(</span><span class="n"><span style="color:#ff0000">chrono::make24</span></span><span class="p">(</span><span class="n"><a href="duration/op_h.html">3h</a></span><span class="p">,</span> <span class="nb">true</span><span class="p">)</span> <span class="o">==</span> <span class="n"><a href="duration/op_h.html">15h</a></span><span class="p">);</span>
244244
<span class="n"><a href="../cassert/assert.html">assert</a></span><span class="p">(</span><span class="n"><span style="color:#ff0000">chrono::make24</span></span><span class="p">(</span><span class="n"><a href="duration/op_h.html">11h</a></span><span class="p">,</span> <span class="nb">true</span><span class="p">)</span> <span class="o">==</span> <span class="n"><a href="duration/op_h.html">23h</a></span><span class="p">);</span>
245245
<span class="p">}</span>

0 commit comments

Comments
 (0)