Repository navigation
Conversation
qicosmos
left a comment
There was a problem hiding this comment.
-
正确性:
member_names.hpp:177-183中get_member_offset_arr(T&& t)的反射分支把结果缓存到static std::array<size_t, Count> arr = std_meta::member_offsets(t);。这里arr仅按T实例化一次,但偏移计算依赖传入对象t,若member_offsets通过对象地址求偏移,缓存首个对象结果会有潜在 UB/错误风险。建议确保member_offsets只基于类型而非实例,或改为consteval/constexpr类型级计算。 -
正确性/兼容性:
member_count.hpp:14无条件#include "std_meta.hpp",虽然内部有宏保护,但会把实验特性头引入所有编译路径。若某些编译器对<meta>/反射语法支持不完整,仍可能触发解析问题。建议将反射实现完全隔离到#if IGUANA_ENABLE_CXX26_REFLECTION分支内。 -
性能:
std_meta.hpp:49-55的make_meta_pack在consteval里使用std::vector,编译期开销较高,也依赖编译器对 constexpr 动态分配的实现质量。建议改成定长容器或直接基于 range 展开,减少编译时间和实验特性风险。 -
正确性:
member_ptr.hpp:103-111中struct_to_tuple()反射分支调用std_meta::member_ptr_tuple(internal::wrapper<type>::value),需确认wrapper<type>::value对非默认可构造类型是否可用;否则会让“可反射但不可默认构造”的类型编译失败。 -
CI 稳定性:workflow:20-38 使用
gcc:16Docker tag,当前官方镜像未必长期存在/稳定,PR 会因环境波动失败。建议固定 digest 或使用明确发行版镜像。 -
代码风格:
CMakeLists.txt:42使用add_definitions(-DIGUANA_ENABLE_CXX26_REFLECTION),更推荐add_compile_definitions(...);add_compile_options(-freflection)也最好限定到目标级,避免全局污染。
No description provided.