68
68
69
69
</ head >
70
70
< body >
71
- < header data-kunai-mdinfo ="{"meta": {"header": ["type_traits"], "namespace": ["std"], "id-type": ["class template"], "cpp": ["cpp11"]}, "sources": [{"id": "0aa8d668272aa6ad844224a2ec98c852630c221b", "source": "#include <type_traits>\n\nstatic_assert(std::is_trivial<int>::value == true, \"value == true, int is trivial\");\nstatic_assert(std::is_same<std::is_trivial<int>::value_type, bool>::value, \"value_type == bool\");\nstatic_assert(std::is_same<std::is_trivial<int>::type, std::true_type>::value, \"type == true_type\");\nstatic_assert(std::is_trivial<int>() == true, \"is_trivial<int>() == true\");\n\nstatic_assert(std::is_trivial<int&>::value == false, \"value == false, int& is not trivial\");\nstatic_assert(std::is_same<std::is_trivial<int&>::value_type, bool>::value, \"value_type == bool\");\nstatic_assert(std::is_same<std::is_trivial<int&>::type, std::false_type>::value, \"type == false_type\");\nstatic_assert(std::is_trivial<int&>() == false, \"is_trivial<int&>() == false\");\n\nstatic_assert(std::is_trivial<const volatile int>::value == true, \"const volatile int is trivial\");\n\nclass trivial_class{};\nstruct non_trivial_class {\n non_trivial_class() {} // \u30c7\u30d5\u30a9\u30eb\u30c8\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u304c\u975e\u30c8\u30ea\u30d3\u30a2\u30eb\n};\nstatic_assert(std::is_trivial<trivial_class>::value == true, \"trivial_class is trivial\");\nstatic_assert(std::is_trivial<trivial_class&>::value == false, \"trivial_class& is not trivial\");\nstatic_assert(std::is_trivial<non_trivial_class>::value == false, \"non_trivial_class is not trivial\");\nstatic_assert(std::is_trivial<non_trivial_class&>::value == false, \"non_trivial_class& is not trivial\");\n\nint main(){}\n"}], "page_id": ["reference", "type_traits", "is_trivial"]} ">
71
+ < header data-kunai-mdinfo ="{"meta": {"header": ["type_traits"], "namespace": ["std"], "id-type": ["class template"], "cpp": ["cpp11", "cpp26deprecated"]}, "sources": [{"id": "0aa8d668272aa6ad844224a2ec98c852630c221b", "source": "#include <type_traits>\n\nstatic_assert(std::is_trivial<int>::value == true, \"value == true, int is trivial\");\nstatic_assert(std::is_same<std::is_trivial<int>::value_type, bool>::value, \"value_type == bool\");\nstatic_assert(std::is_same<std::is_trivial<int>::type, std::true_type>::value, \"type == true_type\");\nstatic_assert(std::is_trivial<int>() == true, \"is_trivial<int>() == true\");\n\nstatic_assert(std::is_trivial<int&>::value == false, \"value == false, int& is not trivial\");\nstatic_assert(std::is_same<std::is_trivial<int&>::value_type, bool>::value, \"value_type == bool\");\nstatic_assert(std::is_same<std::is_trivial<int&>::type, std::false_type>::value, \"type == false_type\");\nstatic_assert(std::is_trivial<int&>() == false, \"is_trivial<int&>() == false\");\n\nstatic_assert(std::is_trivial<const volatile int>::value == true, \"const volatile int is trivial\");\n\nclass trivial_class{};\nstruct non_trivial_class {\n non_trivial_class() {} // \u30c7\u30d5\u30a9\u30eb\u30c8\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u304c\u975e\u30c8\u30ea\u30d3\u30a2\u30eb\n};\nstatic_assert(std::is_trivial<trivial_class>::value == true, \"trivial_class is trivial\");\nstatic_assert(std::is_trivial<trivial_class&>::value == false, \"trivial_class& is not trivial\");\nstatic_assert(std::is_trivial<non_trivial_class>::value == false, \"non_trivial_class is not trivial\");\nstatic_assert(std::is_trivial<non_trivial_class&>::value == false, \"non_trivial_class& is not trivial\");\n\nint main(){}\n"}], "page_id": ["reference", "type_traits", "is_trivial"]} ">
72
72
< nav class ="navbar navbar-default " role ="navigation ">
73
73
< div class ="container-fluid ">
74
74
< div class ="navbar-header ">
188
188
189
189
< p class ="text-right "> < small >
190
190
最終更新日時(UTC):
191
- < span itemprop ="datePublished " content ="2024-06-11T13:45:38 ">
192
- 2024年06月11日 13時45分38秒
191
+ < span itemprop ="datePublished " content ="2025-01-10T08:54:05 ">
192
+ 2025年01月10日 08時54分05秒
193
193
</ span >
194
194
< br />
195
195
< span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
212
212
< div class ="row ">
213
213
< div class ="col-sm-12 content-body ">
214
214
215
- < div class ="identifier-type "> class template</ div > < div class ="header "> <type_traits></ div > < h1 itemprop ="name "> < span class ="namespace " title ="namespace std "> std::</ span > < span class ="token "> is_trivial</ span > < span class ="cpp cpp11 " title ="C++11で追加 "> (C++11)</ span > </ h1 >
215
+ < div class ="identifier-type "> class template</ div > < div class ="header "> <type_traits></ div > < h1 itemprop ="name "> < span class ="namespace " title ="namespace std "> std::</ span > < span class ="token "> is_trivial</ span > < span class ="cpp cpp11 " title ="C++11で追加 "> (C++11)</ span > < span class =" cpp cpp26deprecated text-warning " title =" C++26で非推奨 " > (C++26で非推奨) </ span > < /h1 >
216
216
< div itemprop ="articleBody "> < p > < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="k "> namespace</ span > < span class ="n "> std</ span > < span class ="p "> {</ span >
217
217
< span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="k "> class</ span > < span class ="nc "> T</ span > < span class ="o "> ></ span >
218
218
< span class ="k "> struct</ span > < span class ="n "> is_trivial</ span > < span class ="p "> ;</ span >
222
222
< span class ="p "> }</ span >
223
223
</ code > </ pre > </ div >
224
224
</ p >
225
+ < p > この型は、C++26で非推奨となった。</ p >
226
+ < p > 代わりの機能として、以下を使用すること:</ p >
227
+ < ul >
228
+ < li > < code > < a href ="is_trivially_default_constructible.html "> std::is_trivially_default_constructible</ a > </ code > </ li >
229
+ < li > < code > < a href ="is_trivially_copyable.html "> std::is_trivially_copyable</ a > </ code > </ li >
230
+ < li > < code > < a href ="is_trivially_copy_assignable.html "> std::is_trivially_copy_assignable</ a > </ code > </ li >
231
+ </ ul >
225
232
< h2 > 概要</ h2 >
226
233
< p > 型< code > T</ code > がトリビアル型か調べる。トリビアル型は、トリビアルコピー可能、かつトリビアルなデフォルトコンストラクタを持つ型、およびそのcv修飾を含む。</ p >
227
234
< h2 > 要件</ h2 >
@@ -230,6 +237,14 @@ <h2>効果</h2>
230
237
< p > < code > is_trivial</ code > は、型< code > T</ code > がトリビアル型であるならば< code > < a href ="true_type.html "> true_type</ a > </ code > から派生し、そうでなければ< code > < a href ="false_type.html "> false_type</ a > </ code > から派生する。</ p >
231
238
< h2 > 備考</ h2 >
232
239
< p > スカラ型は、トリビアル型の要件を満たす。トリビアル型の配列は、トリビアル型の要件を満たす。</ p >
240
+ < h2 > 非推奨の詳細</ h2 >
241
+ < p > この機能は、トリビアルにコピー可能かと、トリビアルに< a class ="cpprefjp-defined-word " data-desc ="デフォルト初期化。`T x;`構文での初期化。トリビアルにデフォルト構築可能な型の場合は初期化されず(オブジェクトのlifetimeは開始される)、そうではないクラス型はデフォルトコンストラクタで初期化する。配列型の場合は各要素が再帰的にデフォルト初期化される "> デフォルト構築</ a > 可能かの2つをチェックする。しかし、これら2つのチェックは異なる場面で必要となるため、この機能が必要となる状況がほとんどなかった。</ p >
242
+ < p > そのため、以下の個別要件をチェックする型を使用することを推奨し、本機能は非推奨とした。</ p >
243
+ < ul >
244
+ < li > < code > < a href ="is_trivially_default_constructible.html "> std::is_trivially_default_constructible</ a > </ code > </ li >
245
+ < li > < code > < a href ="is_trivially_copyable.html "> std::is_trivially_copyable</ a > </ code > </ li >
246
+ < li > < code > < a href ="is_trivially_copy_assignable.html "> std::is_trivially_copy_assignable</ a > </ code > </ li >
247
+ </ ul >
233
248
< h2 > 例</ h2 >
234
249
< p > < div class ="yata " id ="0aa8d668272aa6ad844224a2ec98c852630c221b "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../type_traits.html "> <type_traits></ a > </ span > < span class ="cp "> </ span >
235
250
@@ -281,6 +296,10 @@ <h2>参照</h2>
281
296
</ ul >
282
297
</ li >
283
298
< li > < a href ="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0006r0.html " target ="_blank "> P0006R0 Adopt Type Traits Variable Templates from Library Fundamentals TS for C++17</ a > </ li >
299
+ < li > < a href ="https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p3247r2.html " target ="_blank "> P3247R2: Deprecate the notion of trivial types</ a > < ul >
300
+ < li > C++26で非推奨化</ li >
301
+ </ ul >
302
+ </ li >
284
303
</ ul > </ div >
285
304
286
305
</ div >
0 commit comments