6868
6969 </ head >
7070 < body >
71- < header data-kunai-mdinfo ="{"meta": {"cpp": ["cpp11"]}, "sources": [{"id": "e5d910f16bf9f9b9462d24adeaf37bd99e93927e", "source": "#include <cassert>\n\nconstexpr int square(int x)\n{\n return x * x;\n}\n\nint main()\n{\n constexpr int compile_time_result = square(3);\n static_assert(compile_time_result == 9, \"result must be 9\");\n\n int runtime_result = square(3);\n assert(runtime_result == 9);\n}\n"}, {"id": "1442b94723e770c24d05c0b0af53c0f4f1a7c8ed", "source": "constexpr int min(int a, int b)\n{\n // \u6761\u4ef6\u5206\u5c90\u306b\u306f\u6761\u4ef6\u6f14\u7b97\u5b50?:\u3092\u4f7f\u7528\u3059\u308b\n return a < b ? a : b;\n}\n\nconstexpr int factorial(int n)\n{\n // \u30eb\u30fc\u30d7\u306b\u306f\u518d\u5e30\u3092\u4f7f\u7528\u3059\u308b\n return n == 0 ? 1 : n * factorial(n - 1);\n}\n\nint main()\n{\n constexpr int min_val = min(2, 3);\n static_assert(min_val == 2, \"result must be 2\");\n\n constexpr int factorial_val = factorial(5);\n static_assert(factorial_val == 120, \"result muse be 120\");\n}\n"}, {"id": "23d4aa34b768c848f1b0471ce75d97a00d75dcc1", "source": "class Integer {\n int value_;\npublic:\n constexpr Integer(int value)\n : value_(value) {}\n\n constexpr int get() const\n { return value_; }\n};\n\nint main()\n{\n constexpr Integer x = 3;\n static_assert(x.get() == 3, \"x value must be 3\");\n}\n"}], "page_id": ["lang", "cpp11", "constexpr"]} ">
71+ < header data-kunai-mdinfo ="{"meta": {"cpp": ["cpp11"]}, "sources": [{"id": "e5d910f16bf9f9b9462d24adeaf37bd99e93927e", "source": "#include <cassert>\n\nconstexpr int square(int x)\n{\n return x * x;\n}\n\nint main()\n{\n constexpr int compile_time_result = square(3);\n static_assert(compile_time_result == 9, \"result must be 9\");\n\n int runtime_result = square(3);\n assert(runtime_result == 9);\n}\n"}, {"id": "82de0e36764af8afbec56b81bdd7738c620b48f3", "source": "constexpr int min(int a, int b)\n{\n // \u6761\u4ef6\u5206\u5c90\u306b\u306f\u6761\u4ef6\u6f14\u7b97\u5b50?:\u3092\u4f7f\u7528\u3059\u308b\n return a < b ? a : b;\n}\n\nconstexpr int factorial(int n)\n{\n // \u30eb\u30fc\u30d7\u306b\u306f\u518d\u5e30\u3092\u4f7f\u7528\u3059\u308b\n return n == 0 ? 1 : n * factorial(n - 1);\n}\n\nint main()\n{\n constexpr int min_val = min(2, 3);\n static_assert(min_val == 2, \"result must be 2\");\n\n constexpr int factorial_val = factorial(5);\n static_assert(factorial_val == 120, \"result must be 120\");\n}\n"}, {"id": "23d4aa34b768c848f1b0471ce75d97a00d75dcc1", "source": "class Integer {\n int value_;\npublic:\n constexpr Integer(int value)\n : value_(value) {}\n\n constexpr int get() const\n { return value_; }\n};\n\nint main()\n{\n constexpr Integer x = 3;\n static_assert(x.get() == 3, \"x value must be 3\");\n}\n"}], "page_id": ["lang", "cpp11", "constexpr"]} ">
7272 < nav class ="navbar navbar-default " role ="navigation ">
7373 < div class ="container-fluid ">
7474 < div class ="navbar-header ">
189189 < p class ="text-right "> < small >
190190 最終更新日時:
191191 < time itemprop ="datePublished " class ="js-local-time "
192- datetime ="2026-05-03T20:37:18 +09:00 ">
193- 2026年05月03日 20時37分18秒 (JST)
192+ datetime ="2026-08-08T23:27:00 +09:00 ">
193+ 2026年08月08日 23時27分00秒 (JST)
194194 </ time >
195195 < br />
196196 < span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
197- < span itemprop ="name "> Koichi Murase </ span >
197+ < span itemprop ="name "> rotarymars </ span >
198198 </ span >
199199 が更新
200200 </ small > </ p >
@@ -269,7 +269,7 @@ <h2>概要</h2>
269269< p > < code > constexpr</ code > 関数がコンパイル時に呼び出されるか、実行時に呼び出されるかは、その関数の結果を受け取る、左辺によって決定される。引数が定数でかつ、左辺が< code > constexpr</ code > 修飾された変数であれば、右辺の関数はコンパイル時に呼び出される。そうでなければ、関数は実行時に呼び出される。</ p >
270270< p > < code > constexpr</ code > 変数は、書き換えることができない定数となる。</ p >
271271< p > < code > constexpr</ code > 関数もまた、その内部で変数の書き換えはできず、< a class ="cpprefjp-defined-word " data-desc ="関数呼び出し式の評価結果となるオブジェクト・値 "> 戻り値</ a > の型を< code > void</ code > にすることもできない。変数の書き換えをせずに、計算した結果を返す必要がある。また、< code > constexpr</ code > 関数には、その本体において、< code > return</ code > 文ひとつのみで処理を行わなければならない、という制限がある。そのため、条件分岐には< code > if</ code > 文の代わりに条件演算子を、ループには< code > while</ code > 文や< code > for</ code > 文の代わりに再帰を使用する必要がある。</ p >
272- < p > < div class ="yata " id ="1442b94723e770c24d05c0b0af53c0f4f1a7c8ed "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="k "> constexpr</ span > < span class ="w "> </ span > < span class ="kt "> int</ span > < span class ="w "> </ span > < span class ="nf "> min</ span > < span class ="p "> (</ span > < span class ="kt "> int</ span > < span class ="w "> </ span > < span class ="n "> a</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="kt "> int</ span > < span class ="w "> </ span > < span class ="n "> b</ span > < span class ="p "> )</ span >
272+ < p > < div class ="yata " id ="82de0e36764af8afbec56b81bdd7738c620b48f3 "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="k "> constexpr</ span > < span class ="w "> </ span > < span class ="kt "> int</ span > < span class ="w "> </ span > < span class ="nf "> min</ span > < span class ="p "> (</ span > < span class ="kt "> int</ span > < span class ="w "> </ span > < span class ="n "> a</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="kt "> int</ span > < span class ="w "> </ span > < span class ="n "> b</ span > < span class ="p "> )</ span >
273273< span class ="p "> {</ span >
274274< span class ="w "> </ span > < span class ="c1 "> // 条件分岐には条件演算子?:を使用する</ span >
275275< span class ="w "> </ span > < span class ="k "> return</ span > < span class ="w "> </ span > < span class ="n "> a</ span > < span class ="w "> </ span > < span class ="o "> <</ span > < span class ="w "> </ span > < span class ="n "> b</ span > < span class ="w "> </ span > < span class ="o "> ?</ span > < span class ="w "> </ span > < span class ="n "> a</ span > < span class ="w "> </ span > < span class ="o "> :</ span > < span class ="w "> </ span > < span class ="n "> b</ span > < span class ="p "> ;</ span >
@@ -287,7 +287,7 @@ <h2>概要</h2>
287287< span class ="w "> </ span > < span class ="k "> static_assert</ span > < span class ="p "> (</ span > < span class ="n "> min_val</ span > < span class ="w "> </ span > < span class ="o "> ==</ span > < span class ="w "> </ span > < span class ="mi "> 2</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="s "> "result must be 2"</ span > < span class ="p "> );</ span >
288288
289289< span class ="w "> </ span > < span class ="k "> constexpr</ span > < span class ="w "> </ span > < span class ="kt "> int</ span > < span class ="w "> </ span > < span class ="n "> factorial_val</ span > < span class ="w "> </ span > < span class ="o "> =</ span > < span class ="w "> </ span > < span class ="n "> factorial</ span > < span class ="p "> (</ span > < span class ="mi "> 5</ span > < span class ="p "> );</ span >
290- < span class ="w "> </ span > < span class ="k "> static_assert</ span > < span class ="p "> (</ span > < span class ="n "> factorial_val</ span > < span class ="w "> </ span > < span class ="o "> ==</ span > < span class ="w "> </ span > < span class ="mi "> 120</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="s "> "result muse be 120"</ span > < span class ="p "> );</ span >
290+ < span class ="w "> </ span > < span class ="k "> static_assert</ span > < span class ="p "> (</ span > < span class ="n "> factorial_val</ span > < span class ="w "> </ span > < span class ="o "> ==</ span > < span class ="w "> </ span > < span class ="mi "> 120</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="s "> "result must be 120"</ span > < span class ="p "> );</ span >
291291< span class ="p "> }</ span >
292292</ code > </ pre > </ div >
293293</ div > </ p >
0 commit comments