Skip to content

Commit 474a801

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent c5a597b commit 474a801

File tree

6 files changed

+172
-759
lines changed

6 files changed

+172
-759
lines changed

lang/cpp11/scoped_enum.html

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,8 @@
188188

189189
<p class="text-right"><small>
190190
最終更新日時(UTC):
191-
<span itemprop="datePublished" content="2024-08-14T11:55:57">
192-
2024年08月14日 11時55分57秒
191+
<span itemprop="datePublished" content="2024-08-14T17:57:31">
192+
2024年08月14日 17時57分31秒
193193
</span>
194194
<br/>
195195
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -300,6 +300,9 @@ <h2>この機能が必要になった背景・経緯</h2>
300300
<h2><a href="#relative-page" id="relative-page">関連項目</a></h2>
301301
<ul>
302302
<li><code><a href="../../reference/type_traits/underlying_type.html">underlying_type</a></code></li>
303+
<li><code><a href="../../reference/utility/to_underlying.html">to_underlying</a></code></li>
304+
<li><a href="../cpp17/construction_enum_class_values.html">enum class変数の初期値として整数を指定する際の規則を調整</a></li>
305+
<li><a href="../cpp20/using_enum.html">スコープ付き列挙型のusing宣言</a></li>
303306
</ul>
304307
<h2>参照</h2>
305308
<ul>

lang/cpp17/construction_enum_class_values.html

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,11 @@
2828
<meta property="og:url" content="https://cpprefjp.github.io/lang/cpp17/construction_enum_class_values.html" />
2929
<meta property="og:site_name" content="cpprefjp - C++日本語リファレンス" />
3030
<meta property="og:type" content="article" />
31-
<meta property="og:description" content="C++11にてスコープを持つ列挙型が導入された。これは基底型を明示することができ、従来の列挙型と異なり整数型への暗黙の型変換を行わない。" />
31+
<meta property="og:description" content="C++11にて[スコープを持つ列挙型](/lang/cpp11/scoped_enum.md)が導入された。これは基底型を明示することができ、従来の列挙型と異なり整数型への暗黙の型変換を行わない。" />
3232
<meta name="twitter:card" content="summary" />
3333
<meta name="twitter:title" content="enum class変数の初期値として整数を指定する際の規則を調整 [P0138R2] - cpprefjp C++日本語リファレンス" />
3434
<meta name="twitter:url" content="https://cpprefjp.github.io/lang/cpp17/construction_enum_class_values.html" />
35-
<meta name="twitter:description" content="C++11にてスコープを持つ列挙型が導入された。これは基底型を明示することができ、従来の列挙型と異なり整数型への暗黙の型変換を行わない。" />
35+
<meta name="twitter:description" content="C++11にて[スコープを持つ列挙型](/lang/cpp11/scoped_enum.md)が導入された。これは基底型を明示することができ、従来の列挙型と異なり整数型への暗黙の型変換を行わない。" />
3636

3737

3838
<link rel="alternate" type="application/atom+xml" title="Atom" href="https://cpprefjp.github.io/rss.xml" />
@@ -188,12 +188,12 @@
188188

189189
<p class="text-right"><small>
190190
最終更新日時(UTC):
191-
<span itemprop="datePublished" content="2024-07-08T07:33:21">
192-
2024年07月08日 07時33分21秒
191+
<span itemprop="datePublished" content="2024-08-14T17:57:31">
192+
2024年08月14日 17時57分31秒
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">Tetsuro Matsumura</span>
197197
</span>
198198
が更新
199199
</small></p>
@@ -218,10 +218,10 @@ <h1 itemprop="name"><span class="token">enum class変数の初期値として整
218218
<p>のちのC++規格でさらに変更される場合があるため<a href="#relative-page">関連項目</a>を参照してください。</p>
219219
<p></p>
220220
<h2>概要</h2>
221-
<p>C++11にてスコープを持つ列挙型が導入された。これは基底型を明示することができ、従来の列挙型と異なり整数型への暗黙の型変換を行わない。</p>
221+
<p>C++11にて<a href="../cpp11/scoped_enum.html">スコープを持つ列挙型</a>が導入された。これは基底型を明示することができ、従来の列挙型と異なり整数型への暗黙の型変換を行わない。</p>
222222
<p>型変換を禁止する規則が厳格すぎて、初期化の際に不便が生じていたためC++17で規則が緩和された。</p>
223223
<h2>仕様</h2>
224-
<p>スコープを持つ列挙型に基底型が指定されていて、初期化リストが単一の要素<code>v</code>を持ち、かつリストによる直接の初期化であれば、初期化できる。</p>
224+
<p><a href="../cpp11/scoped_enum.html">スコープを持つ列挙型</a>に基底型が指定されていて、初期化リストが単一の要素<code>v</code>を持ち、かつリストによる直接の初期化であれば、初期化できる。</p>
225225
<p>ただし基底型へ変換する際に、精度を失う変換が要求される場合はプログラムは<a class="cpprefjp-defined-word" data-desc="プログラムが適格でないこと。コンパイルエラーなどになる" href="../../implementation-compliance.html#dfn-ill-formed">不適格</a>となる。</p>
226226
<h2></h2>
227227
<p><div class="yata" id="d0f31b25dc0150652caa74c3fdbbe2a2e7f9d328"><div class="codehilite"><pre><span></span><code><span class="k">enum</span> <span class="k">class</span> <span class="nc">byte</span> <span class="o">:</span> <span class="kt">unsigned</span> <span class="kt">char</span> <span class="p">{</span> <span class="p">};</span>
@@ -286,13 +286,13 @@ <h3>警告例</h3>
286286
2 errors generated.
287287
</code></pre></p>
288288
<h2>この機能が必要になった背景・経緯</h2>
289-
<p>ユーザ定義の整数を定義する際のテクニックとして例で挙げたように、要素を一つも持たないスコープを持つ列挙型を定義する方法がある</p>
289+
<p>ユーザ定義の整数を定義する際のテクニックとして例で挙げたように、要素を一つも持たない<a href="../cpp11/scoped_enum.html">スコープを持つ列挙型</a>を定義する方法がある</p>
290290
<p><div class="codehilite"><pre><span></span><code><span class="k">enum</span> <span class="k">class</span> <span class="nc">byte</span> <span class="o">:</span> <span class="kt">unsigned</span> <span class="kt">char</span> <span class="p">{</span> <span class="p">};</span>
291291
</code></pre></div>
292292
</p>
293293
<p><code>unsigned char</code>型を直接使用すると整数への暗黙の型変換が行われ、しばしばバグの原因となるが、<code>byte</code>型を使えば整数への暗黙の型変換を防ぐことができる。それでいて<code>unsigned char</code>型を直接使用した場合と同様の効率良いコードを書くことができる利点がある(例えば<code>struct</code>のコピーや値渡しにペナルティが生じるようなアーキテクチャでも、効率良く扱うことができる)。</p>
294294
<p>しかしこのテクニックの欠点は<code>byte</code>型を整数で初期化する際にキャストが必要となってしまうことである。キャストを行うとプログラムが見づらいうえに、精度が失われる変換を検出できなくなる問題があった(プログラマが本当に精度を失わせたいのか、間違った値を指定しただけなのか、コンパイラには判断できない)。</p>
295-
<p>C++17ではスコープを持つ列挙型の初期化ルールを緩和し、簡潔な記述を実現するとともに、意図せず精度を失う変換を行う危険性を排除した。</p>
295+
<p>C++17では<a href="../cpp11/scoped_enum.html">スコープを持つ列挙型</a>の初期化ルールを緩和し、簡潔な記述を実現するとともに、意図せず精度を失う変換を行う危険性を排除した。</p>
296296
<h2><a href="#relative-page" id="relative-page">関連項目</a></h2>
297297
<ul>
298298
<li><a href="../cpp11/scoped_enum.html">C++11 スコープを持つ列挙型</a></li>

lang/cpp20/using_enum.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -188,12 +188,12 @@
188188

189189
<p class="text-right"><small>
190190
最終更新日時(UTC):
191-
<span itemprop="datePublished" content="2024-07-08T07:33:21">
192-
2024年07月08日 07時33分21秒
191+
<span itemprop="datePublished" content="2024-08-14T17:57:31">
192+
2024年08月14日 17時57分31秒
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">Tetsuro Matsumura</span>
197197
</span>
198198
が更新
199199
</small></p>
@@ -240,7 +240,7 @@ <h2>仕様</h2>
240240
</code></pre></div>
241241
</p>
242242
<p>また、using宣言で列挙値を指定できるようになる。このときは、指定した列挙値だけがスコープ指定を省略できるようになる。</p>
243-
<p>対象とする列挙型はスコープを持つ列挙型でなくても構わない</p>
243+
<p>対象とする列挙型は<a href="../cpp11/scoped_enum.html">スコープを持つ列挙型</a>でなくても構わない</p>
244244
<p><div class="yata" id="19ea57c4dad31905b836128128f820898a41213a"><div class="codehilite"><pre><span></span><code><span class="k">namespace</span> <span class="n">ns</span> <span class="p">{</span>
245245
<span class="k">class</span> <span class="nc">foo</span> <span class="p">{</span>
246246
<span class="k">enum</span> <span class="n">bar</span> <span class="p">{</span>
@@ -304,7 +304,7 @@ <h3>出力</h3>
304304
<h2>この機能が必要になった背景・経緯</h2>
305305
<p>C言語形式の列挙型を改善するために<a href="../cpp11/scoped_enum.html">スコープを持つ列挙型</a>が導入されたが、スコープを持っているために列挙値を参照するときに必ずスコープ解決演算子を使う必要があり、冗長に感じられる場合もあった。</p>
306306
<p>そこで、列挙型のスコープを名前空間と同じようなものと捉えて、using宣言によって省略できるようにした。</p>
307-
<p>これにより、C言語形式の列挙型をスコープを持つ列挙型へ置き換えるというリファクタリングをする際、(整数との暗黙変換を別とすれば)ソースコードレベルの互換性を保って置き換えることができるようにもなった。</p>
307+
<p>これにより、C言語形式の列挙型を<a href="../cpp11/scoped_enum.html">スコープを持つ列挙型</a>へ置き換えるというリファクタリングをする際、(整数との暗黙変換を別とすれば)ソースコードレベルの互換性を保って置き換えることができるようにもなった。</p>
308308
<h2><a href="#relative-page" id="relative-page">関連項目</a></h2>
309309
<ul>
310310
<li><a href="../cpp11/scoped_enum.html">スコープを持つ列挙型</a></li>

reference/new/align_val_t.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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="2024-08-14T17:57:31">
192+
2024年08月14日 17時57分31秒
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">Tetsuro Matsumura</span>
197197
</span>
198198
が更新
199199
</small></p>
@@ -220,7 +220,7 @@
220220
</p>
221221
<h2>概要</h2>
222222
<p>C++17において、動的メモリ確保時のアライメント指定がサポートされた。これは、デフォルトよりも大きなアライメントを要求するとき、<code>new</code> に渡されるアライメント値の型である。
223-
スコープを持つ列挙型として定義されているが、意図しない型変換を防ぐためのものなので、列挙値は定義されていない。</p>
223+
<a href="../../lang/cpp11/scoped_enum.html">スコープを持つ列挙型</a>として定義されているが、意図しない型変換を防ぐためのものなので、列挙値は定義されていない。</p>
224224
<h2>バージョン</h2>
225225
<h3>言語</h3>
226226
<ul>

0 commit comments

Comments
 (0)