Fix is_public and is_class_member for scoped/unscoped enum (#194)

* Add bubble up for unscoped enum in membership check

Check membership for public check access

Signed-off-by: zebullax <zebullax@gmail.com>

* Fix golden copy for generated headers

Signed-off-by: zebullax <zebullax@gmail.com>

* Skip validation of reflection unittest that introduce non ascii character

Signed-off-by: zebullax <zebullax@gmail.com>

* Check class membership for is_private/protected/public

Signed-off-by: zebullax <zebullax@gmail.com>

---------

Signed-off-by: zebullax <zebullax@gmail.com>
This commit is contained in:
zebullax
2025-10-22 17:46:23 +09:00
committed by GitHub
parent 63a00eeeed
commit 9171cf41ef
4 changed files with 81 additions and 12 deletions

View File

@@ -82,6 +82,7 @@ module;
#include <mdspan>
#include <memory>
#include <memory_resource>
#include <meta>
#include <mutex>
#include <new>
#include <numbers>

View File

@@ -392,4 +392,33 @@ struct D : A, protected B, private C {
} // namespace bb_clang_p2996_issue_148_regression_test
// ========================================
// bb_clang_p2996_issue_193_regression_test
// ========================================
namespace bb_clang_p2996_issue_193_regression_test {
struct S {
enum E {
A
};
enum class SE {
B
};
};
static_assert(std::meta::is_class_member(^^S::E));
static_assert(std::meta::is_class_member(^^S::SE));
static_assert(std::meta::is_public(^^S::E));
static_assert(std::meta::is_public(^^S::SE));
static_assert(std::meta::is_class_member(^^S::E::A));
static_assert(!std::meta::is_class_member(^^S::SE::B));
static_assert(std::meta::is_public(^^S::E::A));
static_assert(!std::meta::is_public(^^S::SE::B));
} // namespace bb_clang_p2996_issue_193_regression_test
int main() { }

View File

@@ -282,6 +282,8 @@ check-generated-output)
--exclude 'ostream.pass.cpp' \
--exclude 'transcoding.pass.cpp' \
--exclude 'underflow.pass.cpp' \
--exclude 'define-aggregate.pass.cpp' \
--exclude 'names.pass.cpp' \
|| false
;;
#