Skip to content

Commit c188d54

Browse files
Remove out-of-line definition of constexpr static data members in C++17 and above
As we do support C++11 and C++14, keep the definition for those languages.
1 parent 172041b commit c188d54

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

include/xsimd/types/xsimd_batch.hpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,8 +273,10 @@ namespace xsimd
273273
XSIMD_INLINE batch logical_or(batch const& other) const noexcept;
274274
};
275275

276+
#if __cplusplus < 201703L
276277
template <class T, class A>
277278
constexpr std::size_t batch<T, A>::size;
279+
#endif
278280

279281
/**
280282
* @brief batch of predicate over scalar or complex values.
@@ -348,8 +350,10 @@ namespace xsimd
348350
static XSIMD_INLINE register_type make_register(detail::index_sequence<>, V... v) noexcept;
349351
};
350352

353+
#if __cplusplus < 201703L
351354
template <class T, class A>
352355
constexpr std::size_t batch_bool<T, A>::size;
356+
#endif
353357

354358
/**
355359
* @brief batch of complex values.
@@ -482,8 +486,10 @@ namespace xsimd
482486
real_batch m_imag;
483487
};
484488

489+
#if __cplusplus < 201703L
485490
template <class T, class A>
486491
constexpr std::size_t batch<std::complex<T>, A>::size;
492+
#endif
487493

488494
#ifdef XSIMD_ENABLE_XTL_COMPLEX
489495
template <typename T, bool i3ec, typename A>

include/xsimd/types/xsimd_traits.hpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,10 @@ namespace xsimd
5353
static constexpr size_t size = 1;
5454
};
5555

56+
#if __cplusplus < 201703L
5657
template <class T>
5758
constexpr size_t simd_traits_impl<T, false>::size;
59+
#endif
5860

5961
template <class T>
6062
struct simd_traits_impl<T, true>
@@ -64,8 +66,10 @@ namespace xsimd
6466
static constexpr size_t size = type::size;
6567
};
6668

69+
#if __cplusplus < 201703L
6770
template <class T>
6871
constexpr size_t simd_traits_impl<T, true>::size;
72+
#endif
6973

7074
template <class T, class A>
7175
struct static_check_supported_config_emitter
@@ -128,8 +132,10 @@ namespace xsimd
128132
static constexpr size_t size = simd_traits<type>::size;
129133
};
130134

135+
#if __cplusplus < 201703L
131136
template <class T>
132137
constexpr size_t revert_simd_traits<T>::size;
138+
#endif
133139

134140
template <class T>
135141
struct revert_simd_traits<batch<T>>
@@ -138,8 +144,10 @@ namespace xsimd
138144
static constexpr size_t size = batch<T>::size;
139145
};
140146

147+
#if __cplusplus < 201703L
141148
template <class T>
142149
constexpr size_t revert_simd_traits<batch<T>>::size;
150+
#endif
143151

144152
template <class T>
145153
using simd_type = typename simd_traits<T>::type;

0 commit comments

Comments
 (0)