6868
6969 </ head >
7070 < body >
71- < header data-kunai-mdinfo ="{"meta": {"header": ["meta"], "namespace": ["std::meta"], "id-type": ["function"], "cpp": ["cpp26"]}, "sources": [{"id": "5ff53d27942544ca4f2e511b67a2b449a790f1d4", "source": "#include <meta>\n#include <print>\n\nstruct Label { const char* text; };\n\nstruct [[=Label{std::define_static_string(\"my struct\")}, =42]] S {};\n\nint main() {\n constexpr auto annots = std::define_static_array(std::meta::annotations_of(^^S));\n std::println(\"\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u6570: {}\", annots.size());\n\n template for (constexpr auto a : annots) {\n // \u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u306e\u578b\u540d\u3092\u51fa\u529b\n std::println(\" \u578b: {}\", std::meta::display_string_of(std::meta::type_of(a)));\n\n // \u578b\u3054\u3068\u306b\u5024\u3092\u53d6\u308a\u51fa\u3057\u3066\u51fa\u529b\n // \u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u306f\u5024\u306e\u30ea\u30d5\u30ec\u30af\u30b7\u30e7\u30f3\u3067\u306f\u306a\u3044\u305f\u3081\u3001\n // constant_of()\u3067\u5024\u3092\u53d6\u308a\u51fa\u3057\u3066\u304b\u3089\u30b9\u30d7\u30e9\u30a4\u30b9\u3059\u308b\n if constexpr (std::meta::type_of(a) == ^^Label) {\n std::println(\" \u5024: {}\", [:std::meta::constant_of(a):].text);\n } else if constexpr (std::meta::type_of(a) == ^^int) {\n std::println(\" \u5024: {}\", [:std::meta::constant_of(a):]);\n }\n }\n}\n"}], "page_id": ["reference", "meta", "annotations_of"]} ">
71+ < header data-kunai-mdinfo ="{"meta": {"header": ["meta"], "namespace": ["std::meta"], "id-type": ["function"], "cpp": ["cpp26"]}, "sources": [{"id": "f4533b6f0fb8884d361eae9efd8551d15e618502", "source": "#include <meta>\n#include <print>\n\nstruct Label { const char* text; };\n\nstruct [[=Label{std::define_static_string(\"my struct\")}, =42]] S {};\n\nint main() {\n constexpr auto annots = std::define_static_array(std::meta::annotations_of(^^S));\n // annots\u306fconsteval-only\u578b\u306e\u305f\u3081\u3001\u5b9f\u884c\u6642\u306b\u4f7f\u3046\u306b\u306f\u30b5\u30a4\u30ba\u306a\u3069\u3092\n // \u5b9a\u6570\u5f0f\u3068\u3057\u3066\u3042\u3089\u304b\u3058\u3081\u53d6\u308a\u51fa\u3057\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308b\n constexpr std::size_t count = annots.size();\n std::println(\"\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u6570: {}\", count);\n\n template for (constexpr auto a : annots) {\n // \u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u306e\u578b\u540d\u3092\u51fa\u529b\n std::println(\" \u578b: {}\", std::meta::display_string_of(std::meta::type_of(a)));\n\n // \u578b\u3054\u3068\u306b\u5024\u3092\u53d6\u308a\u51fa\u3057\u3066\u51fa\u529b\n // \u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u306f\u5024\u306e\u30ea\u30d5\u30ec\u30af\u30b7\u30e7\u30f3\u3067\u306f\u306a\u3044\u305f\u3081\u3001\n // constant_of()\u3067\u5024\u3092\u53d6\u308a\u51fa\u3057\u3066\u304b\u3089\u30b9\u30d7\u30e9\u30a4\u30b9\u3059\u308b\n if constexpr (std::meta::type_of(a) == ^^Label) {\n std::println(\" \u5024: {}\", [:std::meta::constant_of(a):].text);\n } else if constexpr (std::meta::type_of(a) == ^^int) {\n std::println(\" \u5024: {}\", [:std::meta::constant_of(a):]);\n }\n }\n}\n"}], "page_id": ["reference", "meta", "annotations_of"]} ">
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-24T03:25:00 ">
192- 2026年04月24日 03時25分00秒
191+ < span itemprop ="datePublished " content ="2026-04-24T03:55:26 ">
192+ 2026年04月24日 03時55分26秒
193193 </ span >
194194 < br />
195195 < span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
@@ -223,7 +223,7 @@ <h2>概要</h2>
223223< h2 > < a class ="cpprefjp-defined-word " data-desc ="関数呼び出し式の評価結果となるオブジェクト・値 "> 戻り値</ a > </ h2 >
224224< p > < code > item</ code > に付加されたすべてのアノテーションのリフレクションを格納した< code > < a href ="../vector/vector.html "> std::vector</ a > </ code > オブジェクトを返す。</ p >
225225< h2 > 例</ h2 >
226- < p > < div class ="yata " id ="5ff53d27942544ca4f2e511b67a2b449a790f1d4 "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include < a href ="../meta.html "> <meta></ a > </ span >
226+ < p > < div class ="yata " id ="f4533b6f0fb8884d361eae9efd8551d15e618502 "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include < a href ="../meta.html "> <meta></ a > </ span >
227227< span class ="cp "> #include < a href ="../print.html "> <print></ a > </ span >
228228
229229< span class ="k "> struct</ span > < span class ="w "> </ span > < span class ="nc "> Label</ span > < span class ="w "> </ span > < span class ="p "> {</ span > < span class ="w "> </ span > < span class ="k "> const</ span > < span class ="w "> </ span > < span class ="kt "> char</ span > < span class ="o "> *</ span > < span class ="w "> </ span > < span class ="n "> text</ span > < span class ="p "> ;</ span > < span class ="w "> </ span > < span class ="p "> };</ span >
@@ -232,7 +232,10 @@ <h2>例</h2>
232232
233233< 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 >
234234< span class ="w "> </ span > < span class ="k "> constexpr</ span > < span class ="w "> </ span > < span class ="k "> auto</ span > < span class ="w "> </ span > < span class ="n "> annots</ span > < span class ="w "> </ span > < span class ="o "> =</ span > < 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 "> std</ span > < span class ="o "> ::</ span > < span class ="n "> meta</ span > < span class ="o "> ::</ span > < span class ="n "> annotations_of</ span > < span class ="p "> (</ span > < span class ="o "> ^^</ span > < span class ="n "> S</ span > < span class ="p "> ));</ span >
235- < span class ="w "> </ span > < span class ="n "> < a href ="../print/println.html "> std::println</ a > </ span > < span class ="p "> (</ span > < span class ="s "> "アノテーション数: {}"</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="n "> annots</ span > < span class ="p "> .</ span > < span class ="n "> size</ span > < span class ="p "> ());</ span >
235+ < span class ="w "> </ span > < span class ="c1 "> // annotsはconsteval-only型のため、実行時に使うにはサイズなどを</ span >
236+ < span class ="w "> </ span > < span class ="c1 "> // 定数式としてあらかじめ取り出しておく必要がある</ span >
237+ < span class ="w "> </ span > < span class ="k "> constexpr</ span > < span class ="w "> </ span > < span class ="n "> < a href ="../cstddef/size_t.html "> std::size_t</ a > </ span > < span class ="w "> </ span > < span class ="n "> count</ span > < span class ="w "> </ span > < span class ="o "> =</ span > < span class ="w "> </ span > < span class ="n "> annots</ span > < span class ="p "> .</ span > < span class ="n "> size</ span > < span class ="p "> ();</ span >
238+ < span class ="w "> </ span > < span class ="n "> < a href ="../print/println.html "> std::println</ a > </ span > < span class ="p "> (</ span > < span class ="s "> "アノテーション数: {}"</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="n "> count</ span > < span class ="p "> );</ span >
236239
237240< 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 "> a</ span > < span class ="w "> </ span > < span class ="o "> :</ span > < span class ="w "> </ span > < span class ="n "> annots</ span > < span class ="p "> )</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
238241< span class ="w "> </ span > < span class ="c1 "> // アノテーションの型名を出力</ span >
0 commit comments