6868
6969 </ head >
7070 < 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"]} ">
7272 < nav class ="navbar navbar-default " role ="navigation ">
7373 < div class ="container-fluid ">
7474 < div class ="navbar-header ">
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-01-10T08:54:05 ">
192+ 2025年01月10日 08時54分05秒
193193 </ span >
194194 < br />
195195 < span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
212212 < div class ="row ">
213213 < div class ="col-sm-12 content-body ">
214214
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 >
216216< 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 >
217217 < span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="k "> class</ span > < span class ="nc "> T</ span > < span class ="o "> ></ span >
218218 < span class ="k "> struct</ span > < span class ="n "> is_trivial</ span > < span class ="p "> ;</ span >
222222< span class ="p "> }</ span >
223223</ code > </ pre > </ div >
224224</ 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 >
225232< h2 > 概要</ h2 >
226233< p > 型< code > T</ code > がトリビアル型か調べる。トリビアル型は、トリビアルコピー可能、かつトリビアルなデフォルトコンストラクタを持つ型、およびそのcv修飾を含む。</ p >
227234< h2 > 要件</ h2 >
@@ -230,6 +237,14 @@ <h2>効果</h2>
230237< 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 >
231238< h2 > 備考</ h2 >
232239< 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 >
233248< h2 > 例</ h2 >
234249< 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 >
235250
@@ -281,6 +296,10 @@ <h2>参照</h2>
281296</ ul >
282297</ li >
283298< 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 >
284303</ ul > </ div >
285304
286305 </ div >
0 commit comments