diff --git a/include/luisa/xir/pool.h b/include/luisa/xir/pool.h index b7d413427..1850f25e7 100644 --- a/include/luisa/xir/pool.h +++ b/include/luisa/xir/pool.h @@ -8,21 +8,18 @@ namespace luisa::compute::xir { -#define LUISA_XIR_DEFINED_ISA_METHOD(BaseType, base_name) \ - template \ - requires std::derived_from \ - [[nodiscard]] bool isa() const noexcept { \ - if constexpr (std::is_same_v) { \ - return true; \ - } else { \ - using ImmediateDerived = typename Derived::derived_##base_name##_type; \ - if constexpr (std::is_final_v) { \ - return derived_##base_name##_tag() == Derived::static_derived_##base_name##_tag(); \ - } else { \ - return derived_##base_name##_tag() == Derived::static_derived_##base_name##_tag() && \ - static_cast(this)->template isa(); \ - } \ - } \ +#define LUISA_XIR_DEFINED_ISA_METHOD(BaseType, base_name) \ + template \ + requires std::derived_from \ + [[nodiscard]] bool isa() const noexcept { \ + if constexpr (std::is_same_v) { \ + return true; \ + } else { \ + using ImmediateDerived = typename Derived::derived_##base_name##_type; \ + return derived_##base_name##_tag() == Derived::static_derived_##base_name##_tag() && \ + (std::is_final_v || std::is_same_v || \ + static_cast(this)->template isa()); \ + } \ } class Pool;