Skip to content

Commit 48f9a3b

Browse files
[basic.fundamental] Complete examples for reflections
Co-authored-by: Jakub Jelinek <[email protected]>
1 parent 3f88656 commit 48f9a3b

File tree

1 file changed

+18
-14
lines changed

1 file changed

+18
-14
lines changed

source/basic.tex

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5640,7 +5640,7 @@
56405640
\begin{codeblock}
56415641
int arr[] = {1, 2, 3};
56425642
auto [a1, a2, a3] = arr;
5643-
void fn();
5643+
[[=1]] void fn(int n);
56445644
enum Enum { A };
56455645
using Alias = int;
56465646
struct B {};
@@ -5651,6 +5651,7 @@
56515651
template<auto> struct TCls {};
56525652
template<auto> void TFn();
56535653
template<auto> int TVar;
5654+
template<auto N> using TAlias = TCls<N>;
56545655
template<auto> concept Concept = requires { true; };
56555656
namespace NS {};
56565657
namespace NSAlias = NS;
@@ -5662,19 +5663,22 @@
56625663
constexpr auto r3 = ^^arr; // represents a variable
56635664
constexpr auto r4 = ^^a3; // represents a structured binding
56645665
constexpr auto r5 = ^^fn; // represents a function
5665-
constexpr auto r6 = ^^Enum::A; // represents an enumerator
5666-
constexpr auto r7 = ^^Alias; // represents a type alias
5667-
constexpr auto r8 = ^^S; // represents a type
5668-
constexpr auto r9 = ^^S::mem; // represents a class member
5669-
constexpr auto r10 = std::meta::members_of(^^S, ctx)[1]; // represents an unnamed bit-field
5670-
constexpr auto r11 = ^^TCls; // represents a class template
5671-
constexpr auto r12 = ^^TFn; // represents a function template
5672-
constexpr auto r13 = ^^TVar; // represents a variable template
5673-
constexpr auto r14 = ^^Concept; // represents a concept
5674-
constexpr auto r15 = ^^NSAlias; // represents a namespace alias
5675-
constexpr auto r16 = ^^NS; // represents a namespace
5676-
constexpr auto r17 = std::meta::bases_of(^^S, ctx)[0]; // represents a direct base class relationship
5677-
constexpr auto r18 =
5666+
constexpr auto r6 = std::meta::parameters_of(^^fn)[0]; // represents a function parameter
5667+
constexpr auto r7 = ^^Enum::A; // represents an enumerator
5668+
constexpr auto r8 = std::meta::annotations_of(^^fn)[0]; // represents an annotation
5669+
constexpr auto r9 = ^^Alias; // represents a type alias
5670+
constexpr auto r10 = ^^S; // represents a type
5671+
constexpr auto r11 = ^^S::mem; // represents a class member
5672+
constexpr auto r12 = std::meta::members_of(^^S, ctx)[1]; // represents an unnamed bit-field
5673+
constexpr auto r13 = ^^TCls; // represents a class template
5674+
constexpr auto r14 = ^^TFn; // represents a function template
5675+
constexpr auto r15 = ^^TVar; // represents a variable template
5676+
constexpr auto r16 = ^^TAlias; // represents an alias template
5677+
constexpr auto r17 = ^^Concept; // represents a concept
5678+
constexpr auto r18 = ^^NSAlias; // represents a namespace alias
5679+
constexpr auto r19 = ^^NS; // represents a namespace
5680+
constexpr auto r20 = std::meta::bases_of(^^S, ctx)[0]; // represents a direct base class relationship
5681+
constexpr auto r21 =
56785682
std::meta::data_member_spec(^^int, {.name="member"}); // represents a data member description
56795683
\end{codeblock}
56805684
\end{example}

0 commit comments

Comments
 (0)