Skip to content

Commit 12ad720

Browse files
committed
fix: concepts fallback if not available
1 parent 62b32c6 commit 12ad720

File tree

1 file changed

+22
-3
lines changed

1 file changed

+22
-3
lines changed

include/viennaps/psPreCompileMacros.hpp

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,31 @@
3535

3636
#include <type_traits>
3737

38+
#if defined(__cpp_concepts) && (__cpp_concepts >= 201907L)
39+
40+
// C++20 concepts path
3841
template <typename T>
3942
concept Numeric = std::is_same_v<T, float> || std::is_same_v<T, double>;
4043

4144
template <int D>
4245
concept 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

0 commit comments

Comments
 (0)