@@ -68,7 +68,7 @@ concept NBL_CONCEPT_NAME = requires BOOST_PP_EXPR_IF(LOCAL_PARAM_COUNT,(BOOST_PP
6868//
6969#define NBL_IMPL_CONCEPT_REQ_TYPE (...) typename __VA_ARGS__;
7070#define NBL_IMPL_CONCEPT_REQ_EXPR (...) __VA_ARGS__;
71- #define NBL_IMPL_CONCEPT_REQ_EXPR_RET_TYPE (E,C,...) {E}; C<decltype E, __VA_ARGS__ >;
71+ #define NBL_IMPL_CONCEPT_REQ_EXPR_RET_TYPE (E,C,...) {E}; C<decltype E __VA_OPT__ (,) __VA_ARGS__ >;
7272//
7373#define NBL_IMPL_CONCEPT (NBL_IMPL_CONCEPT_REQ_TYPE,NBL_IMPL_CONCEPT_REQ_EXPR,NBL_IMPL_CONCEPT_REQ_EXPR_RET_TYPE)
7474//
@@ -77,56 +77,8 @@ concept NBL_CONCEPT_NAME = requires BOOST_PP_EXPR_IF(LOCAL_PARAM_COUNT,(BOOST_PP
7777#define NBL_CONCEPT_END (SEQ) BOOST_PP_SEQ_FOR_EACH_I (NBL_IMPL_CONCEPT_END_DEF, DUMMY, SEQ) \
7878}
7979
80-
81- #include <concepts>
82-
83- // Alias some of the std concepts in nbl. As this is C++20 only, we don't need to use
84- // the macros here.
85- template <typename T, typename U>
86- concept same_as = std::same_as<T, U>;
87-
88- template <typename D, typename B>
89- concept derived_from = std::derived_from<D, B>;
90-
91- template <typename F, typename T>
92- concept convertible_to = std::convertible_to<F, T>;
93-
94- template <typename T, typename F>
95- concept assignable_from = std::assignable_from<T, F>;
96-
97- template <typename T, typename U>
98- concept common_with = std::common_with<T, U>;
99-
100- template <typename T>
101- concept integral = std::integral<T>;
102-
103- template <typename T>
104- concept signed_integral = std::signed_integral<T>;
105-
106- template <typename T>
107- concept unsigned_integral = std::unsigned_integral<T>;
108-
109- template <typename T>
110- concept floating_point = std::floating_point<T>;
111-
112-
113- // Some other useful concepts.
114-
115- template<typename T, typename... Ts>
116- concept any_of = (same_as<T, Ts> || ...);
117-
118- template <typename T>
119- concept scalar = floating_point<T> || integral<T>;
120-
121- template <typename T>
122- concept vectorial = is_vector<T>::value;
123-
124- template <typename T>
125- concept matricial = is_matrix<T>::value;
126-
12780#else
12881
129-
13082// to define a concept using `concept Name = SomeContexprBoolCondition<T>;`
13183#define NBL_BOOL_CONCEPT NBL_CONSTEXPR bool
13284
@@ -144,7 +96,6 @@ concept matricial = is_matrix<T>::value;
14496// condition, use instead of the closing `>` of a function template
14597#define NBL_FUNC_REQUIRES (...) ,::nbl::hlsl::enable_if_t<(__VA_ARGS__),bool > = true >
14698
147-
14899//
149100#define NBL_CONCEPT_BEGIN (LOCAL_PARAM_COUNT) namespace BOOST_PP_CAT (__concept__,NBL_CONCEPT_NAME) \
150101{
@@ -153,7 +104,7 @@ concept matricial = is_matrix<T>::value;
153104//
154105#define NBL_IMPL_CONCEPT_REQ_TYPE (...) ::nbl::hlsl::make_void_t<typename __VA_ARGS__ >
155106#define NBL_IMPL_CONCEPT_REQ_EXPR (...) ::nbl::hlsl::make_void_t<decltype (__VA_ARGS__)>
156- #define NBL_IMPL_CONCEPT_REQ_EXPR_RET_TYPE (E,C,...) ::nbl::hlsl::enable_if_t<C<decltype E , __VA_ARGS__ > >
107+ #define NBL_IMPL_CONCEPT_REQ_EXPR_RET_TYPE (E,C,...) ::nbl::hlsl::enable_if_t<C<decltype E __VA_OPT__ (,) __VA_ARGS__ > >
157108//
158109#define NBL_IMPL_CONCEPT_SFINAE (NBL_IMPL_CONCEPT_REQ_TYPE,NBL_IMPL_CONCEPT_REQ_EXPR,NBL_IMPL_CONCEPT_REQ_EXPR_RET_TYPE)
159110//
0 commit comments