diff --git a/include/util/ring_buffer.hpp b/include/util/ring_buffer.hpp index 7bbb777..0b1dadc 100644 --- a/include/util/ring_buffer.hpp +++ b/include/util/ring_buffer.hpp @@ -23,6 +23,7 @@ #include //size_t #include //atomic (duh) + #ifdef __cpp_lib_hardware_interference_size #include //hardware_destructive_interference_size #endif @@ -48,8 +49,14 @@ namespace util{ using const_reference = const value_type&; private: - #ifdef __cpp_lib_hardware_interference_size - static constexpr size_t cacheline_size = std::hardware_destructive_interference_size; + #if defined(__cpp_lib_hardware_interference_size) + // libc++ bug + // https://bugs.llvm.org/show_bug.cgi?id=41423 + #if defined(_LIBCPP_VERSION) && _LIBCPP_VERSION >= 11000 + static constexpr size_t cacheline_size = std::hardware_destructive_interference_size; + #else + static constexpr size_t cacheline_size = 64; + #endif #else //Best guess static constexpr size_t cacheline_size = 64;