2828 < meta property ="og:url " content ="https://cpprefjp.github.io/reference/meta/is_defaulted.html " />
2929 < meta property ="og:site_name " content ="cpprefjp - C++日本語リファレンス " />
3030 < meta property ="og:type " content ="article " />
31- < meta property ="og:description " content ="`= default`されているかを判定する 。 " />
31+ < meta property ="og:description " content ="デフォルト関数(規格上の[defaulted function](https://eel.is/c++draft/dcl.fct.def. default#def:defaulted))であるかを判定する 。 " />
3232 < meta name ="twitter:card " content ="summary " />
3333 < meta name ="twitter:title " content ="is_defaulted - cpprefjp C++日本語リファレンス " />
3434 < meta name ="twitter:url " content ="https://cpprefjp.github.io/reference/meta/is_defaulted.html " />
35- < meta name ="twitter:description " content ="`= default`されているかを判定する 。 " />
35+ < meta name ="twitter:description " content ="デフォルト関数(規格上の[defaulted function](https://eel.is/c++draft/dcl.fct.def. default#def:defaulted))であるかを判定する 。 " />
3636
3737
3838 < link rel ="alternate " type ="application/atom+xml " title ="Atom " href ="https://cpprefjp.github.io/rss.xml " />
6868
6969 </ head >
7070 < body >
71- < header data-kunai-mdinfo ="{"meta": {"header": ["meta"], "namespace": ["std::meta"], "id-type": ["function"], "cpp": ["cpp26"]}, "sources": [{"id": "bda4d1d7aed7670dbf334eb21ba4a54f286b1cd0", "source": "#include <meta>\n\nstruct S {\n S() = default;\n S(int) {}\n};\n\nint main() {\n template for (constexpr auto m :\n std::define_static_array(std::meta::members_of(^^S, std::meta::access_context::unchecked()))) {\n if constexpr (std::meta::is_default_constructor(m)) {\n static_assert(std::meta::is_defaulted(m));\n }\n }\n}\n"}], "page_id": ["reference", "meta", "is_defaulted"]} ">
71+ < header data-kunai-mdinfo ="{"meta": {"header": ["meta"], "namespace": ["std::meta"], "id-type": ["function"], "cpp": ["cpp26"]}, "sources": [{"id": "f49bfd9f943d2c84297f0ccbe7189a550d18ba2a", "source": "#include <meta>\n\n// \u3059\u3079\u3066\u306e\u7279\u6b8a\u30e1\u30f3\u30d0\u95a2\u6570\u304c\u6697\u9ed9\u7684\u306b\u5ba3\u8a00\u3055\u308c\u308b\nstruct Implicit {};\n\n// \u660e\u793a\u7684\u306b= default\u3055\u308c\u308b\nstruct Explicit {\n Explicit() = default;\n Explicit(int) {}\n};\n\nint main() {\n template for (constexpr auto m :\n std::define_static_array(std::meta::members_of(^^Implicit,\n std::meta::access_context::unchecked()))) {\n // Implicit\u30af\u30e9\u30b9\u306e\u6697\u9ed9\u5ba3\u8a00\u3055\u308c\u305f\u30c7\u30d5\u30a9\u30eb\u30c8\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u7b49\u3082\u30c7\u30d5\u30a9\u30eb\u30c8\u95a2\u6570\u3068\u306a\u308b\n if constexpr (std::meta::is_default_constructor(m)) {\n static_assert(std::meta::is_defaulted(m));\n }\n }\n\n template for (constexpr auto m :\n std::define_static_array(std::meta::members_of(^^Explicit,\n std::meta::access_context::unchecked()))) {\n if constexpr (std::meta::is_default_constructor(m)) {\n // \u660e\u793a\u7684\u306a= default\u6307\u5b9a\u3055\u308c\u305f\u95a2\u6570\u3082\u30c7\u30d5\u30a9\u30eb\u30c8\u95a2\u6570\n static_assert(std::meta::is_defaulted(m));\n }\n if constexpr (std::meta::is_constructor(m)\n && !std::meta::is_default_constructor(m)\n && !std::meta::is_copy_constructor(m)\n && !std::meta::is_move_constructor(m)) {\n // \u30e6\u30fc\u30b6\u30fc\u5b9a\u7fa9\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u95a2\u6570\u3067\u306f\u306a\u3044\n static_assert(!std::meta::is_defaulted(m));\n }\n }\n}\n"}], "page_id": ["reference", "meta", "is_defaulted"]} ">
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 ="2026-04-20T05:29:50 ">
192- 2026年04月20日 05時29分50秒
191+ < span itemprop ="datePublished " content ="2026-04-30T06:09:00 ">
192+ 2026年04月30日 06時09分00秒
193193 </ span >
194194 < br />
195195 < span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
219219</ code > </ pre > </ div >
220220</ p >
221221< h2 > 概要</ h2 >
222- < p > < code > = default</ code > されているかを判定する。</ p >
222+ < p > デフォルト関数(規格上の< a href ="https://eel.is/c++draft/dcl.fct.def.default#def:defaulted " target ="_blank "> defaulted function</ a > )であるかを判定する。</ p >
223+ < p > デフォルト関数には、以下が含まれる:</ p >
224+ < ul >
225+ < li > < code > = default</ code > を明示的に付加して定義された関数</ li >
226+ < li > 暗黙的に宣言される特殊メンバ関数(デフォルトコンストラクタ、コピー/ムーブコンストラクタ、コピー/ムーブ代入演算子、デストラクタ)</ li >
227+ < li > 暗黙的に宣言される比較演算子</ li >
228+ </ ul >
223229< h2 > < a class ="cpprefjp-defined-word " data-desc ="関数呼び出し式の評価結果となるオブジェクト・値 "> 戻り値</ a > </ h2 >
224- < p > < code > r</ code > が < code > = default </ code > された関数を表す場合に < code > true</ code > を返す。</ p >
230+ < p > < code > r</ code > がデフォルト関数を表す場合に < code > true</ code > を返す。</ p >
225231< h2 > 例</ h2 >
226- < p > < div class ="yata " id ="bda4d1d7aed7670dbf334eb21ba4a54f286b1cd0 "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include < a href ="../meta.html "> <meta></ a > </ span >
232+ < p > < div class ="yata " id ="f49bfd9f943d2c84297f0ccbe7189a550d18ba2a "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include < a href ="../meta.html "> <meta></ a > </ span >
233+
234+ < span class ="c1 "> // すべての特殊メンバ関数が暗黙的に宣言される</ span >
235+ < span class ="k "> struct</ span > < span class ="w "> </ span > < span class ="nc "> Implicit</ span > < span class ="w "> </ span > < span class ="p "> {};</ span >
227236
228- < span class ="k "> struct</ span > < span class ="w "> </ span > < span class ="nc "> S</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
229- < span class ="w "> </ span > < span class ="n "> S</ span > < span class ="p "> ()</ span > < span class ="w "> </ span > < span class ="o "> =</ span > < span class ="w "> </ span > < span class ="k "> default</ span > < span class ="p "> ;</ span >
230- < span class ="w "> </ span > < span class ="n "> S</ span > < span class ="p "> (</ span > < span class ="kt "> int</ span > < span class ="p "> )</ span > < span class ="w "> </ span > < span class ="p "> {}</ span >
237+ < span class ="c1 "> // 明示的に= defaultされる</ span >
238+ < span class ="k "> struct</ span > < span class ="w "> </ span > < span class ="nc "> Explicit</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
239+ < span class ="w "> </ span > < span class ="n "> Explicit</ span > < span class ="p "> ()</ span > < span class ="w "> </ span > < span class ="o "> =</ span > < span class ="w "> </ span > < span class ="k "> default</ span > < span class ="p "> ;</ span >
240+ < span class ="w "> </ span > < span class ="n "> Explicit</ span > < span class ="p "> (</ span > < span class ="kt "> int</ span > < span class ="p "> )</ span > < span class ="w "> </ span > < span class ="p "> {}</ span >
231241< span class ="p "> };</ span >
232242
233243< span class ="kt "> int</ span > < span class ="w "> </ span > < span class ="nf "> main</ span > < span class ="p "> ()</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
234244< span class ="w "> </ span > < span class ="k "> template</ span > < span class ="w "> </ span > < span class ="k "> for</ span > < span class ="w "> </ span > < span class ="p "> (</ span > < span class ="k "> constexpr</ span > < span class ="w "> </ span > < span class ="k "> auto</ span > < span class ="w "> </ span > < span class ="n "> m</ span > < span class ="w "> </ span > < span class ="o "> :</ span >
235- < span class ="w "> </ span > < span class ="n "> < a href ="define_static_array.html "> std::define_static_array</ a > </ span > < span class ="p "> (</ span > < span class ="n "> < a href ="members_of.html "> std::meta::members_of</ a > </ span > < span class ="p "> (</ span > < span class ="o "> ^^</ span > < span class ="n "> S</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="n "> < a href ="access_context.html "> std::meta::access_context</ a > </ span > < span class ="o "> ::</ span > < span class ="n "> < a href ="access_context/unchecked.html "> unchecked</ a > </ span > < span class ="p "> ())))</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
245+ < span class ="w "> </ span > < span class ="n "> < a href ="define_static_array.html "> std::define_static_array</ a > </ span > < span class ="p "> (</ span > < span class ="n "> < a href ="members_of.html "> std::meta::members_of</ a > </ span > < span class ="p "> (</ span > < span class ="o "> ^^</ span > < span class ="n "> Implicit</ span > < span class ="p "> ,</ span >
246+ < span class ="w "> </ span > < span class ="n "> < a href ="access_context.html "> std::meta::access_context</ a > </ span > < span class ="o "> ::</ span > < span class ="n "> < a href ="access_context/unchecked.html "> unchecked</ a > </ span > < span class ="p "> ())))</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
247+ < span class ="w "> </ span > < span class ="c1 "> // Implicitクラスの暗黙宣言されたデフォルトコンストラクタ等もデフォルト関数となる</ span >
236248< span class ="w "> </ span > < span class ="k "> if</ span > < span class ="w "> </ span > < span class ="k "> constexpr</ span > < span class ="w "> </ span > < span class ="p "> (</ span > < span class ="n "> < a href ="is_default_constructor.html "> std::meta::is_default_constructor</ a > </ span > < span class ="p "> (</ span > < span class ="n "> m</ span > < span class ="p "> ))</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
237- < span class ="w "> </ span > < span class ="k "> static_assert</ span > < span class ="p "> (</ span > < span class ="n "> std</ span > < span class ="o "> ::</ span > < span class ="n "> meta</ span > < span class ="o "> ::</ span > < span class ="n "> is_defaulted</ span > < span class ="p "> (</ span > < span class ="n "> m</ span > < span class ="p "> ));</ span >
249+ < span class ="w "> </ span > < span class ="k "> static_assert</ span > < span class ="p "> (</ span > < span class ="n "> < span style ="color:#ff0000 "> std::meta::is_defaulted</ span > </ span > < span class ="p "> (</ span > < span class ="n "> m</ span > < span class ="p "> ));</ span >
250+ < span class ="w "> </ span > < span class ="p "> }</ span >
251+ < span class ="w "> </ span > < span class ="p "> }</ span >
252+
253+ < span class ="w "> </ span > < span class ="k "> template</ span > < span class ="w "> </ span > < span class ="k "> for</ span > < span class ="w "> </ span > < span class ="p "> (</ span > < span class ="k "> constexpr</ span > < span class ="w "> </ span > < span class ="k "> auto</ span > < span class ="w "> </ span > < span class ="n "> m</ span > < span class ="w "> </ span > < span class ="o "> :</ span >
254+ < span class ="w "> </ span > < span class ="n "> < a href ="define_static_array.html "> std::define_static_array</ a > </ span > < span class ="p "> (</ span > < span class ="n "> < a href ="members_of.html "> std::meta::members_of</ a > </ span > < span class ="p "> (</ span > < span class ="o "> ^^</ span > < span class ="n "> Explicit</ span > < span class ="p "> ,</ span >
255+ < span class ="w "> </ span > < span class ="n "> < a href ="access_context.html "> std::meta::access_context</ a > </ span > < span class ="o "> ::</ span > < span class ="n "> < a href ="access_context/unchecked.html "> unchecked</ a > </ span > < span class ="p "> ())))</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
256+ < span class ="w "> </ span > < span class ="k "> if</ span > < span class ="w "> </ span > < span class ="k "> constexpr</ span > < span class ="w "> </ span > < span class ="p "> (</ span > < span class ="n "> < a href ="is_default_constructor.html "> std::meta::is_default_constructor</ a > </ span > < span class ="p "> (</ span > < span class ="n "> m</ span > < span class ="p "> ))</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
257+ < span class ="w "> </ span > < span class ="c1 "> // 明示的な= default指定された関数もデフォルト関数</ span >
258+ < span class ="w "> </ span > < span class ="k "> static_assert</ span > < span class ="p "> (</ span > < span class ="n "> < span style ="color:#ff0000 "> std::meta::is_defaulted</ span > </ span > < span class ="p "> (</ span > < span class ="n "> m</ span > < span class ="p "> ));</ span >
259+ < span class ="w "> </ span > < span class ="p "> }</ span >
260+ < span class ="w "> </ span > < span class ="k "> if</ span > < span class ="w "> </ span > < span class ="k "> constexpr</ span > < span class ="w "> </ span > < span class ="p "> (</ span > < span class ="n "> < a href ="is_constructor.html "> std::meta::is_constructor</ a > </ span > < span class ="p "> (</ span > < span class ="n "> m</ span > < span class ="p "> )</ span >
261+ < span class ="w "> </ span > < span class ="o "> &&</ span > < span class ="w "> </ span > < span class ="o "> !</ span > < span class ="n "> < a href ="is_default_constructor.html "> std::meta::is_default_constructor</ a > </ span > < span class ="p "> (</ span > < span class ="n "> m</ span > < span class ="p "> )</ span >
262+ < span class ="w "> </ span > < span class ="o "> &&</ span > < span class ="w "> </ span > < span class ="o "> !</ span > < span class ="n "> < a href ="is_copy_constructor.html "> std::meta::is_copy_constructor</ a > </ span > < span class ="p "> (</ span > < span class ="n "> m</ span > < span class ="p "> )</ span >
263+ < span class ="w "> </ span > < span class ="o "> &&</ span > < span class ="w "> </ span > < span class ="o "> !</ span > < span class ="n "> < a href ="is_move_constructor.html "> std::meta::is_move_constructor</ a > </ span > < span class ="p "> (</ span > < span class ="n "> m</ span > < span class ="p "> ))</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
264+ < span class ="w "> </ span > < span class ="c1 "> // ユーザー定義コンストラクタはデフォルト関数ではない</ span >
265+ < span class ="w "> </ span > < span class ="k "> static_assert</ span > < span class ="p "> (</ span > < span class ="o "> !</ span > < span class ="n "> < span style ="color:#ff0000 "> std::meta::is_defaulted</ span > </ span > < span class ="p "> (</ span > < span class ="n "> m</ span > < span class ="p "> ));</ span >
238266< span class ="w "> </ span > < span class ="p "> }</ span >
239267< span class ="w "> </ span > < span class ="p "> }</ span >
240268< span class ="p "> }</ span >
@@ -250,7 +278,7 @@ <h3>言語</h3>
250278< h3 > 処理系</ h3 >
251279< ul >
252280< li > < a href ="../../implementation.html#clang "> Clang</ a > : ??</ li >
253- < li > < a href ="../../implementation.html#gcc "> GCC</ a > : ?? </ li >
281+ < li > < a href ="../../implementation.html#gcc "> GCC</ a > : 16 < span aria-label =" 検証済 " role =" img " title =" 検証済 " > ✅ </ span > </ li >
254282< li > < a href ="../../implementation.html#visual_cpp "> Visual C++</ a > : ??</ li >
255283</ ul >
256284< h2 > 参照</ h2 >
0 commit comments