Skip to content

Commit 42fad0f

Browse files
[basic.fundamental] Complete examples for reflections (#8265)
Fixes NB US 22-042 (C++26 CD).
1 parent 4212985 commit 42fad0f

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
@@ -5644,7 +5644,7 @@
56445644
\begin{codeblock}
56455645
int arr[] = {1, 2, 3};
56465646
auto [a1, a2, a3] = arr;
5647-
void fn();
5647+
[[=1]] void fn(int n);
56485648
enum Enum { A };
56495649
using Alias = int;
56505650
struct B {};
@@ -5655,6 +5655,7 @@
56555655
template<auto> struct TCls {};
56565656
template<auto> void TFn();
56575657
template<auto> int TVar;
5658+
template<auto N> using TAlias = TCls<N>;
56585659
template<auto> concept Concept = requires { true; };
56595660
namespace NS {};
56605661
namespace NSAlias = NS;
@@ -5666,19 +5667,22 @@
56665667
constexpr auto r3 = ^^arr; // represents a variable
56675668
constexpr auto r4 = ^^a3; // represents a structured binding
56685669
constexpr auto r5 = ^^fn; // represents a function
5669-
constexpr auto r6 = ^^Enum::A; // represents an enumerator
5670-
constexpr auto r7 = ^^Alias; // represents a type alias
5671-
constexpr auto r8 = ^^S; // represents a type
5672-
constexpr auto r9 = ^^S::mem; // represents a class member
5673-
constexpr auto r10 = std::meta::members_of(^^S, ctx)[1]; // represents an unnamed bit-field
5674-
constexpr auto r11 = ^^TCls; // represents a class template
5675-
constexpr auto r12 = ^^TFn; // represents a function template
5676-
constexpr auto r13 = ^^TVar; // represents a variable template
5677-
constexpr auto r14 = ^^Concept; // represents a concept
5678-
constexpr auto r15 = ^^NSAlias; // represents a namespace alias
5679-
constexpr auto r16 = ^^NS; // represents a namespace
5680-
constexpr auto r17 = std::meta::bases_of(^^S, ctx)[0]; // represents a direct base class relationship
5681-
constexpr auto r18 =
5670+
constexpr auto r6 = std::meta::parameters_of(^^fn)[0]; // represents a function parameter
5671+
constexpr auto r7 = ^^Enum::A; // represents an enumerator
5672+
constexpr auto r8 = std::meta::annotations_of(^^fn)[0]; // represents an annotation
5673+
constexpr auto r9 = ^^Alias; // represents a type alias
5674+
constexpr auto r10 = ^^S; // represents a type
5675+
constexpr auto r11 = ^^S::mem; // represents a class member
5676+
constexpr auto r12 = std::meta::members_of(^^S, ctx)[1]; // represents an unnamed bit-field
5677+
constexpr auto r13 = ^^TCls; // represents a class template
5678+
constexpr auto r14 = ^^TFn; // represents a function template
5679+
constexpr auto r15 = ^^TVar; // represents a variable template
5680+
constexpr auto r16 = ^^TAlias; // represents an alias template
5681+
constexpr auto r17 = ^^Concept; // represents a concept
5682+
constexpr auto r18 = ^^NSAlias; // represents a namespace alias
5683+
constexpr auto r19 = ^^NS; // represents a namespace
5684+
constexpr auto r20 = std::meta::bases_of(^^S, ctx)[0]; // represents a direct base class relationship
5685+
constexpr auto r21 =
56825686
std::meta::data_member_spec(^^int, {.name="member"}); // represents a data member description
56835687
\end{codeblock}
56845688
\end{example}

0 commit comments

Comments
 (0)