11#ifndef RFL_INTERNAL_CPP26_GETFIELDNAMES_HPP_
22#define RFL_INTERNAL_CPP26_GETFIELDNAMES_HPP_
33
4+ #include < format>
45#include < functional>
56#include < meta>
67#include < type_traits>
@@ -32,6 +33,12 @@ consteval auto get_field_names_impl() {
3233 }
3334}
3435
36+ template <auto _i, auto _j>
37+ consteval bool is_same () {
38+ static_assert (_i == _j, " Mismatched types" );
39+ return _i == _j;
40+ }
41+
3542template <class T >
3643consteval auto get_field_names () {
3744 using Type = std::remove_cvref_t <T>;
@@ -44,31 +51,17 @@ consteval auto get_field_names() {
4451
4552 using TupleT = decltype (bind_to_tuple (std::declval<Type&>()));
4653
47- static_assert (members.size () == tuple_size_v<TupleT>,
54+ static_assert (is_same< members.size (), tuple_size_v<TupleT>>() ,
4855 " Number of members and tuple size mismatch" );
4956
50- constexpr bool no_flatten_fields = []<size_t ... _is>(
51- std::index_sequence<_is...>) {
52- return (true && ... && !is_flatten_field_v<tuple_element_t <_is, TupleT>>);
53- }(std::make_index_sequence<members.size ()>{});
54-
55- if constexpr (no_flatten_fields) {
56- return [&]<size_t ... _is>(std::index_sequence<_is...>) {
57- return Literal<
58- StringLiteral<std::meta::identifier_of (members[_is]).size () + 1 >(
59- std::meta::identifier_of (members[_is]))...>();
60- }(std::make_index_sequence<members.size ()>());
61-
62- } else {
63- return [&]<size_t ... _is>(std::index_sequence<_is...>) {
64- return concat_literals (
65- get_field_names_impl<
66- tuple_element_t <_is, TupleT>,
67- Literal<StringLiteral<
68- std::meta::identifier_of (members[_is]).size () + 1 >(
69- std::meta::identifier_of (members[_is]))>>()...);
70- }(std::make_index_sequence<members.size ()>());
71- }
57+ return [&]<size_t ... _is>(std::index_sequence<_is...>) {
58+ return concat_literals (
59+ get_field_names_impl<
60+ tuple_element_t <_is, TupleT>,
61+ Literal<StringLiteral<
62+ std::meta::identifier_of (members[_is]).size () + 1 >(
63+ std::meta::identifier_of (members[_is]))>>()...);
64+ }(std::make_index_sequence<members.size ()>());
7265 }
7366}
7467
0 commit comments