File tree Expand file tree Collapse file tree 1 file changed +8
-2
lines changed Expand file tree Collapse file tree 1 file changed +8
-2
lines changed Original file line number Diff line number Diff line change @@ -574,13 +574,19 @@ auto is( X const& ) -> bool {
574
574
}
575
575
576
576
template < typename C, typename X >
577
- requires (std::is_base_of_v<X, C> && !std::is_same_v<C,X>)
577
+ requires (
578
+ ( std::is_base_of_v<X, C> ||
579
+ ( std::is_polymorphic_v<C> && std::is_polymorphic_v<X>)
580
+ ) && !std::is_same_v<C,X>)
578
581
auto is ( X const & x ) -> bool {
579
582
return dynamic_cast <C const *>(&x) != nullptr ;
580
583
}
581
584
582
585
template < typename C, typename X >
583
- requires (std::is_base_of_v<X, C> && !std::is_same_v<C,X>)
586
+ requires (
587
+ ( std::is_base_of_v<X, C> ||
588
+ ( std::is_polymorphic_v<C> && std::is_polymorphic_v<X>)
589
+ ) && !std::is_same_v<C,X>)
584
590
auto is ( X const * x ) -> bool {
585
591
return dynamic_cast <C const *>(x) != nullptr ;
586
592
}
You can’t perform that action at this time.
0 commit comments