File tree Expand file tree Collapse file tree 1 file changed +22
-3
lines changed
Expand file tree Collapse file tree 1 file changed +22
-3
lines changed Original file line number Diff line number Diff line change 3535
3636#include < type_traits>
3737
38+ #if defined(__cpp_concepts) && (__cpp_concepts >= 201907L)
39+
40+ // C++20 concepts path
3841template <typename T>
3942concept Numeric = std::is_same_v<T, float > || std::is_same_v<T, double >;
4043
4144template <int D>
4245concept Dimension = (D == 2 || D == 3 );
4346
44- #define VIENNAPS_TEMPLATE_ND (N, D ) \
45- template <Numeric N, int D> \
46- requires Dimension<D>
47+ #define VIENNAPS_TEMPLATE_ND (NTypeName, DName ) \
48+ template <Numeric NTypeName, int DName> \
49+ requires Dimension<DName>
50+
51+ #else
52+
53+ // Fallback path (no concepts)
54+ template <typename T>
55+ inline constexpr bool Numeric_v =
56+ std::is_same_v<T, float > || std::is_same_v<T, double >;
57+
58+ template <int D> inline constexpr bool Dimension_v = (D == 2 || D == 3 );
59+
60+ #define VIENNAPS_TEMPLATE_ND (NTypeName, DName ) \
61+ template < \
62+ typename NTypeName, int DName, \
63+ std::enable_if_t <Numeric_v<NTypeName> && Dimension_v<DName>, int > = 0 >
64+
65+ #endif
You can’t perform that action at this time.
0 commit comments