Skip to content

Commit 8665efd

Browse files
authored
Merge pull request #108 from filipsajdak/fsajdak-inspect-add-matchers-for-templates
[SUGGESTION] Add inspect `is()` matchers for templates
2 parents 21648d4 + 83b93e0 commit 8665efd

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

include/cpp2util.h

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -580,6 +580,35 @@ static nonesuch_ nonesuch;
580580
using empty = void;
581581

582582

583+
// Templates
584+
//
585+
template <template <typename...> class C, typename... Ts>
586+
constexpr auto is(C< Ts...> const& ) -> bool {
587+
return true;
588+
}
589+
590+
#if defined(_MSC_VER)
591+
template <template <typename, typename...> class C, typename T>
592+
constexpr auto is( T const& ) -> bool {
593+
return false;
594+
}
595+
#else
596+
template <template <typename...> class C, typename T>
597+
constexpr auto is( T const& ) -> bool {
598+
return false;
599+
}
600+
#endif
601+
602+
template <template <typename,auto> class C, typename T, auto V>
603+
constexpr auto is( C<T, V> const& ) -> bool {
604+
return true;
605+
}
606+
607+
template <template <typename,auto> class C, typename T>
608+
constexpr auto is( T const& ) -> bool {
609+
return false;
610+
}
611+
583612
// Types
584613
//
585614
template< typename C, typename X >

0 commit comments

Comments
 (0)