diff --git a/lang/cpp14/feature_test_macros.html b/lang/cpp14/feature_test_macros.html index f11f74b4373..e7960b4e221 100644 --- a/lang/cpp14/feature_test_macros.html +++ b/lang/cpp14/feature_test_macros.html @@ -188,12 +188,12 @@

最終更新日時(UTC): -

@@ -329,7 +329,7 @@

概要

__cpp_lib_null_iterators 201304 ヌル前方向イテレータ -<iterator> +<iterator> __cpp_lib_quoted_string_io diff --git a/rss.xml b/rss.xml index 8e636c7e576..028933c1ad1 100644 --- a/rss.xml +++ b/rss.xml @@ -2,10 +2,232 @@ cpprefjp - C++日本語リファレンス - 2024-12-24T14:40:33.375275 - 37e467df-4d39-4a49-a1d3-be9271fcc22c + 2024-12-25T07:39:13.038443 + 5d293500-57d0-4eec-b5d6-39d3117c901e + + 機能テストマクロ -- ヘッダのリンクのテキストとアドレスの不一致を修正 + + 08bb4ea25f7b80e3098f1864174c87d2aa893a39:lang/cpp14/feature_test_macros.md + 2024-12-25T16:32:04+09:00 + + <h1 itemprop="name"><span class="token">機能テストマクロ</span><span class="cpp cpp14" title="C++14で追加">(C++14)</span></h1> +<div itemprop="articleBody"><p></p> +<p>このページはC++14に採用された言語機能の変更を解説しています。</p> +<p>のちのC++規格でさらに変更される場合があるため<a href="#relative-page">関連項目</a>を参照してください。</p> +<p></p> +<h2>概要</h2> +<p>SD-6 は C++14 の機能について以下のテストマクロを定義することを推奨している:</p> +<table border="1" bordercolor="#888" style="border-collapse:collapse"> +<thead> +<tr> +<th>マクロ名</th> +<th>値</th> +<th>機能</th> +<th>ヘッダ</th> +</tr> +</thead> +<tbody> +<tr> +<td><code>__cpp_aggregate_nsdmi</code></td> +<td><code>201304</code></td> +<td>メンバ初期化子と集約</td> +<td>predefined</td> +</tr> +<tr> +<td><code>__cpp_binary_literals</code></td> +<td><code>201304</code></td> +<td><a href="binary_literals.html">二進数リテラル</a></td> +<td>predefined</td> +</tr> +<tr> +<td><code>__cpp_constexpr</code></td> +<td><code>201304</code></td> +<td><a href="relaxing_constraints_on_constexpr.html"><code>constexpr</code>関数内での条件分岐とループの文を許可/<code>constexpr</code> メンバ関数の暗黙的な <code>const</code></a></td> +<td>predefined</td> +</tr> +<tr> +<td><code>__cpp_decltype_auto</code></td> +<td><code>201304</code></td> +<td><a href="return_type_deduction_for_normal_functions.html">通常関数の戻り値型推論</a></td> +<td>predefined</td> +</tr> +<tr> +<td><code>__cpp_generic_lambdas</code></td> +<td><code>201304</code></td> +<td><a href="generic_lambdas.html">ジェネリックラムダ</a></td> +<td>predefined</td> +</tr> +<tr> +<td><code>__cpp_init_captures</code></td> +<td><code>201304</code></td> +<td><a href="initialize_capture.html">ラムダ式の初期化キャプチャ</a></td> +<td>predefined</td> +</tr> +<tr> +<td><code>__cpp_lib_chrono_udls</code></td> +<td><code>201304</code></td> +<td><code><a href="../../reference/chrono/duration.html">std::chrono::duration</a></code> のユーザー定義リテラル (<code><a href="../../reference/chrono/duration/op_ns.html">ns</a></code>, <code><a href="../../reference/chrono/duration/op_us.html">us</a></code>, <code><a href="../../reference/chrono/duration/op_ms.html">ms</a></code>, <code><a href="../../reference/chrono/duration/op_s.html">s</a></code>, <code><a href="../../reference/chrono/duration/op_min.html">min</a></code>, <code><a href="../../reference/chrono/duration/op_h.html">h</a></code>)</td> +<td><code><a href="../../reference/chrono.html">&lt;chrono&gt;</a></code></td> +</tr> +<tr> +<td><code>__cpp_lib_complex_udls</code></td> +<td><code>201309</code></td> +<td>ユーザー定義虚数リテラル (<code><a href="../../reference/complex/complex/op_i.html">i</a></code>, <code><a href="../../reference/complex/complex/op_if.html">if</a></code>, <code><a href="../../reference/complex/complex/op_il.html">il</a></code>)</td> +<td><code><a href="../../reference/complex.html">&lt;complex&gt;</a></code></td> +</tr> +<tr> +<td><code>__cpp_lib_exchange_function</code></td> +<td><code>201304</code></td> +<td><code><a href="../../reference/utility/exchange.html">std::exchange</a></code></td> +<td><code><a href="../../reference/utility.html">&lt;utility&gt;</a></code></td> +</tr> +<tr> +<td><code>__cpp_lib_generic_associative_lookup</code></td> +<td><code>201304</code></td> +<td>連想配列 (<code><a href="../../reference/map/map.html">std::map</a></code>, <code><a href="../../reference/map/multimap.html">std::multimap</a></code>, <code><a href="../../reference/set/set.html">std::set</a></code>, <code><a href="../../reference/set/multiset.html">std::multiset</a></code>) における異なる型の比較 (<code>count</code>, <code>equal_range</code>, <code>find</code>, <code>lower_bound</code>, <code>upper_bound</code>)</td> +<td><code><a href="../../reference/map.html">&lt;map&gt;</a></code>, <code><a href="../../reference/set.html">&lt;set&gt;</a></code></td> +</tr> +<tr> +<td><code>__cpp_lib_integer_sequence</code></td> +<td><code>201304</code></td> +<td><a href="../../reference/utility/integer_sequence.html">コンパイル時整数列</a></td> +<td><code><a href="../../reference/utility.html">&lt;utility&gt;</a></code></td> +</tr> +<tr> +<td><code>__cpp_lib_integral_constant_callable</code></td> +<td><code>201304</code></td> +<td><code><a href="../../reference/type_traits/integral_constant.html">std::integral_constant</a></code> に <code>operator()</code> を追加</td> +<td><code><a href="../../reference/type_traits.html">&lt;type_traits&gt;</a></code></td> +</tr> +<tr> +<td><code>__cpp_lib_is_final</code></td> +<td><code>201402</code></td> +<td><code><a href="../../reference/type_traits/is_final.html">std::is_final</a></code></td> +<td><code><a href="../../reference/type_traits.html">&lt;type_traits&gt;</a></code></td> +</tr> +<tr> +<td><code>__cpp_lib_is_null_pointer</code></td> +<td><code>201309</code></td> +<td><code><a href="../../reference/type_traits/is_null_pointer.html">std::is_null_pointer</a></code></td> +<td><code><a href="../../reference/type_traits.html">&lt;type_traits&gt;</a></code></td> +</tr> +<tr> +<td><code>__cpp_lib_make_reverse_iterator</code></td> +<td><code>201402</code></td> +<td><code><a href="../../reference/iterator/make_reverse_iterator.html">std::make_reverse_iterator</a></code></td> +<td><code><a href="../../reference/iterator.html">&lt;iterator&gt;</a></code></td> +</tr> +<tr> +<td><code>__cpp_lib_make_unique</code></td> +<td><code>201304</code></td> +<td><code><a href="../../reference/memory/make_unique.html">std::make_unique</a></code></td> +<td><code><a href="../../reference/memory/make_unique.html">&lt;memory&gt;</a></code></td> +</tr> +<tr> +<td><code>__cpp_lib_null_iterators</code></td> +<td><code>201304</code></td> +<td>ヌル前方向イテレータ</td> +<td><code><a href="../../reference/iterator.html">&lt;iterator&gt;</a></code></td> +</tr> +<tr> +<td><code>__cpp_lib_quoted_string_io</code></td> +<td><code>201304</code></td> +<td><code><a href="../../reference/iomanip/quoted.html">std::quoted</a></code></td> +<td><code><a href="../../reference/iomanip.html">&lt;iomanip&gt;</a></code></td> +</tr> +<tr> +<td><code>__cpp_lib_result_of_sfinae</code></td> +<td><code>201210</code></td> +<td><code><a href="../../reference/type_traits/result_of.html">std::result_of</a></code> と SFINAE</td> +<td><code><a href="../../reference/type_traits.html">&lt;type_traits&gt;</a></code></td> +</tr> +<tr> +<td><code>__cpp_lib_robust_nonmodifying_seq_ops</code></td> +<td><code>201304</code></td> +<td>シーケンスを変更しない操作をよりロバストに</td> +<td><code><a href="../../reference/algorithm.html">&lt;algorithm&gt;</a></code></td> +</tr> +<tr> +<td><code>__cpp_lib_shared_timed_mutex</code></td> +<td><code>201402</code></td> +<td><code>shared_mutex</code> を <code><a href="../../reference/shared_mutex/shared_timed_mutex.html">shared_timed_mutex</a></code> にリネーム</td> +<td><code><a href="../../reference/shared_mutex.html">&lt;shared_mutex&gt;</a></code></td> +</tr> +<tr> +<td><code>__cpp_lib_string_udls</code></td> +<td><code>201304</code></td> +<td>ユーザー定義 <code><a href="../../reference/string/basic_string/op_s.html">std::string_literals::basic_string::sリテラル</a></code></td> +<td><code><a href="../../reference/string.html">&lt;string&gt;</a></code></td> +</tr> +<tr> +<td><code>__cpp_lib_transformation_trait_aliases</code></td> +<td><code>201304</code></td> +<td>型トレイトにエイリアステンプレートを追加</td> +<td><code><a href="../../reference/type_traits.html">&lt;type_traits&gt;</a></code></td> +</tr> +<tr> +<td><code>__cpp_lib_transparent_operators</code></td> +<td><code>201210</code></td> +<td><code><a href="../../reference/functional.html">&lt;functional&gt;</a></code> の二項演算のデフォルトテンプレート引数を <code>void</code> に</td> +<td><code><a href="../../reference/functional.html">&lt;functional&gt;</a></code></td> +</tr> +<tr> +<td><code>__cpp_lib_tuple_element_t</code></td> +<td><code>201402</code></td> +<td><code><a href="../../reference/tuple/tuple_element.html">std::tuple_element_t</a></code></td> +<td><code><a href="../../reference/utility.html">&lt;utility&gt;</a></code></td> +</tr> +<tr> +<td><code>__cpp_lib_tuples_by_type</code></td> +<td><code>201304</code></td> +<td><a href="../../reference/tuple/tuple/get.html">型による <code>std::tuple::get</code></a></td> +<td><code><a href="../../reference/utility.html">&lt;utility&gt;</a></code></td> +</tr> +<tr> +<td><code>__cpp_return_type_deduction</code></td> +<td><code>201304</code></td> +<td><a href="return_type_deduction_for_normal_functions.html">通常関数の戻り値型推論</a></td> +<td>predefined</td> +</tr> +<tr> +<td><code>__cpp_sized_deallocation</code></td> +<td><code>201309</code></td> +<td><a href="sized_deallocation.html">サイズ付きデアロケーション</a></td> +<td>predefined</td> +</tr> +<tr> +<td><code>__cpp_variable_templates</code></td> +<td><code>201304</code></td> +<td><a href="variable_templates.html">変数テンプレート</a></td> +<td>predefined</td> +</tr> +<tr> +<td><code>__has_cpp_attribute(deprecated)</code></td> +<td><code>201309</code></td> +<td><a href="deprecated_attr.html"><code>[[deprecated]]</code>属性</a></td> +<td>predefined</td> +</tr> +<tr> +<td><code>__has_include(&lt;shared_mutex&gt;)</code></td> +<td><code>1</code></td> +<td><a href="../../reference/shared_mutex.html">共有ロック</a></td> +<td>predefined</td> +</tr> +</tbody> +</table> +<h2>参照</h2> +<ul> +<li><a href="https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations#recs.cpp14" target="_blank">SD-6: SG10 Feature Test Recommendations: Standard C++</a></li> +</ul></div> + + + Raclamusi + raclamusi@gmail.com + + + compare_exchange_strong -- atomic : C++26のconstexpr対応 (close #1391) @@ -8214,293 +8436,4 @@ index 000000000..4beac4381 - - aligned_accessor -- mdspan/aligned_accessor: 全メンバ P2897R7(#1380) - - 0353f387740ad119437623114ae25963a7ff08ef:reference/mdspan/aligned_accessor.md - 2024-12-22T16:03:05+09:00 - - <pre><code>diff --git a/reference/mdspan/aligned_accessor.md b/reference/mdspan/aligned_accessor.md -index 36215f2aa..40bcb2e3e 100644 ---- a/reference/mdspan/aligned_accessor.md -+++ b/reference/mdspan/aligned_accessor.md -@@ -37,11 +37,11 @@ namespace std { - - | 名前 | 説明 | 対応バージョン | - |------|------|----------------| --| [`(constructor)`](aligned_accessor/op_constructor.md.nolink) | コンストラクタ | C++26 | -+| [`(constructor)`](aligned_accessor/op_constructor.md) | コンストラクタ | C++26 | - | `(destructor)` | デストラクタ | C++26 | --| [`operator default_accessor`](aligned_accessor/op_default_accessor.md.nolink) | [`default_accessor`](default_accessor.md)型への変換演算子 | C++26 | --| [`access`](aligned_accessor/access.md.nolink) | 指定オフセット位置にある要素へアクセスする | C++26 | --| [`offset`](aligned_accessor/offset.md.nolink) | 指定オフセット位置のハンドルを取得する | C++26 | -+| [`operator default_accessor`](aligned_accessor/op_default_accessor.md) | [`default_accessor`](default_accessor.md)型への変換演算子 | C++26 | -+| [`access`](aligned_accessor/access.md) | 指定オフセット位置にある要素へアクセスする | C++26 | -+| [`offset`](aligned_accessor/offset.md) | 指定オフセット位置のハンドルを取得する | C++26 | - - - ## メンバ型 -</code></pre> - - - yoh - kawasaki.liamg@gmail.com - - - - - access -- mdspan/aligned_accessor: 全メンバ P2897R7(#1380) - - 0353f387740ad119437623114ae25963a7ff08ef:reference/mdspan/aligned_accessor/access.md - 2024-12-22T16:03:05+09:00 - - <pre><code>diff --git a/reference/mdspan/aligned_accessor/access.md b/reference/mdspan/aligned_accessor/access.md -new file mode 100644 -index 000000000..e05dbcc02 ---- /dev/null -+++ b/reference/mdspan/aligned_accessor/access.md -@@ -0,0 +1,41 @@ -+# access -+* mdspan[meta header] -+* function[meta id-type] -+* std[meta namespace] -+* aligned_accessor[meta class] -+* cpp26[meta cpp] -+ -+```cpp -+constexpr reference access(data_handle_type p, size_t i) const noexcept; -+``` -+ -+## 概要 -+指定オフセット位置にある要素へアクセスする。 -+ -+ -+## 事前条件 -+- 半開区間`[0, i+1)`が有効な範囲であり、かつ -+- [`is_sufficiently_aligned`](/reference/memory/is_sufficiently_aligned.md)`&lt;byte_alignment&gt;(p)`が`true`であること。 -+ -+ -+## 効果 -+`return` [`assume_aligned`](/reference/memory/assume_aligned.md)`&lt;byte_alignment&gt;(p)[i];`と等価 -+ -+ -+## 例外 -+投げない -+ -+ -+## バージョン -+### 言語 -+- C++26 -+ -+### 処理系 -+- [Clang](/implementation.md#clang): ?? -+- [GCC](/implementation.md#gcc): ?? -+- [ICC](/implementation.md#icc): ?? -+- [Visual C++](/implementation.md#visual_cpp): ?? -+ -+ -+## 参照 -+- [P2897R7 `aligned_accessor`: An mdspan accessor expressing pointer over-alignment](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2897r7.html) -</code></pre> - - - yoh - kawasaki.liamg@gmail.com - - - - - offset -- mdspan/aligned_accessor: 全メンバ P2897R7(#1380) - - 0353f387740ad119437623114ae25963a7ff08ef:reference/mdspan/aligned_accessor/offset.md - 2024-12-22T16:03:05+09:00 - - <pre><code>diff --git a/reference/mdspan/aligned_accessor/offset.md b/reference/mdspan/aligned_accessor/offset.md -new file mode 100644 -index 000000000..443c02330 ---- /dev/null -+++ b/reference/mdspan/aligned_accessor/offset.md -@@ -0,0 +1,42 @@ -+# offset -+* mdspan[meta header] -+* function[meta id-type] -+* std[meta namespace] -+* aligned_accessor[meta class] -+* cpp26[meta cpp] -+ -+```cpp -+constexpr typename offset_policy::data_handle_type -+ offset(data_handle_type p, size_t i) const noexcept; -+``` -+ -+## 概要 -+指定オフセット位置のハンドルを取得する。 -+ -+ -+## 事前条件 -+- 半開区間`[0, i+1)`が有効な範囲であり、かつ -+- [`is_sufficiently_aligned`](/reference/memory/is_sufficiently_aligned.md)`&lt;byte_alignment&gt;(p)`が`true`であること。 -+ -+ -+## 効果 -+`return` [`assume_aligned`](/reference/memory/assume_aligned.md)`&lt;byte_alignment&gt;(p) + i;`と等価 -+ -+ -+## 例外 -+投げない -+ -+ -+## バージョン -+### 言語 -+- C++26 -+ -+### 処理系 -+- [Clang](/implementation.md#clang): ?? -+- [GCC](/implementation.md#gcc): ?? -+- [ICC](/implementation.md#icc): ?? -+- [Visual C++](/implementation.md#visual_cpp): ?? -+ -+ -+## 参照 -+- [P2897R7 `aligned_accessor`: An mdspan accessor expressing pointer over-alignment](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2897r7.html) -</code></pre> - - - yoh - kawasaki.liamg@gmail.com - - - - - コンストラクタ -- mdspan/aligned_accessor: 全メンバ P2897R7(#1380) - - 0353f387740ad119437623114ae25963a7ff08ef:reference/mdspan/aligned_accessor/op_constructor.md - 2024-12-22T16:03:05+09:00 - - <pre><code>diff --git a/reference/mdspan/aligned_accessor/op_constructor.md b/reference/mdspan/aligned_accessor/op_constructor.md -new file mode 100644 -index 000000000..5b99ed297 ---- /dev/null -+++ b/reference/mdspan/aligned_accessor/op_constructor.md -@@ -0,0 +1,50 @@ -+# コンストラクタ -+* mdspan[meta header] -+* function[meta id-type] -+* std[meta namespace] -+* aligned_accessor[meta class] -+* cpp26[meta cpp] -+ -+```cpp -+constexpr aligned_accessor() noexcept = default; // (1) -+ -+template&lt;class OtherElementType, size_t OtherByteAlignment&gt; -+constexpr aligned_accessor( -+ aligned_accessor&lt;OtherElementType, OtherByteAlignment&gt;) noexcept; // (2) -+ -+template&lt;class OtherElementType&gt; -+explicit constexpr aligned_accessor( -+ default_accessor&lt;OtherElementType&gt;) noexcept; // (3) -+``` -+* default_accessor[link ../default_accessor.md] -+ -+## 概要 -+- (1) : デフォルトコンストラクタ -+- (2) : 他`aligned_accessor`からの変換コンストラクタ -+- (3) : [`default_accessor`](../default_accessor.md)からの変換コンストラクタ -+ -+ -+## テンプレートパラメータ制約 -+- (2) : -+ - [`is_convertible_v`](/reference/type_traits/is_convertible.md)`&lt;OtherElementType(*)[], element_type(*)[]&gt;`が`true`であること -+ - `OtherByteAlignment &gt; byte_alignment` -+- (3) : [`is_convertible_v`](/reference/type_traits/is_convertible.md)`&lt;OtherElementType(*)[], element_type(*)[]&gt;`が`true`であること -+ -+ -+## 例外 -+投げない -+ -+ -+## バージョン -+### 言語 -+- C++26 -+ -+### 処理系 -+- [Clang](/implementation.md#clang): ?? -+- [GCC](/implementation.md#gcc): ?? -+- [ICC](/implementation.md#icc): ?? -+- [Visual C++](/implementation.md#visual_cpp): ?? -+ -+ -+## 参照 -+- [P2897R7 `aligned_accessor`: An mdspan accessor expressing pointer over-alignment](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2897r7.html) -</code></pre> - - - yoh - kawasaki.liamg@gmail.com - - - - - operator default_accessor -- mdspan/aligned_accessor: 全メンバ P2897R7(#1380) - - 0353f387740ad119437623114ae25963a7ff08ef:reference/mdspan/aligned_accessor/op_default_accessor.md - 2024-12-22T16:03:05+09:00 - - <pre><code>diff --git a/reference/mdspan/aligned_accessor/op_default_accessor.md b/reference/mdspan/aligned_accessor/op_default_accessor.md -new file mode 100644 -index 000000000..5c7752cf6 ---- /dev/null -+++ b/reference/mdspan/aligned_accessor/op_default_accessor.md -@@ -0,0 +1,42 @@ -+# operator default_accessor -+* mdspan[meta header] -+* function template[meta id-type] -+* std[meta namespace] -+* aligned_accessor[meta class] -+* cpp26[meta cpp] -+ -+```cpp -+template&lt;class OtherElementType&gt; -+ constexpr operator default_accessor&lt;OtherElementType&gt;() const noexcept; -+``` -+* default_accessor[link ../default_accessor.md] -+ -+## 概要 -+[`default_accessor`](../default_accessor.md)型への変換演算子 -+ -+ -+## テンプレートパラメータ制約 -+[`is_convertible_v`](/reference/type_traits/is_convertible.md)`&lt;element_type(*)[], OtherElementType(*)[]&gt;`が`true`であること -+ -+ -+## 効果 -+`return {};`と等価 -+ -+ -+## 例外 -+投げない -+ -+ -+## バージョン -+### 言語 -+- C++26 -+ -+### 処理系 -+- [Clang](/implementation.md#clang): ?? -+- [GCC](/implementation.md#gcc): ?? -+- [ICC](/implementation.md#icc): ?? -+- [Visual C++](/implementation.md#visual_cpp): ?? -+ -+ -+## 参照 -+- [P2897R7 `aligned_accessor`: An mdspan accessor expressing pointer over-alignment](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2897r7.html) -</code></pre> - - - yoh - kawasaki.liamg@gmail.com - - - \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index dc3d2f386f6..f7d399a88e5 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -35346,7 +35346,7 @@ https://cpprefjp.github.io/lang/cpp14/feature_test_macros.html - 2024-12-16T10:43:31+09:00 + 2024-12-25T16:32:04+09:00 daily 0.7