Skip to content

Commit 3bf3273

Browse files
committed
Working on older compilers
1 parent 3f8bb8c commit 3bf3273

1 file changed

Lines changed: 14 additions & 1 deletion

File tree

include/rtlog/rtlog.h

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,14 @@ template <typename T>
7979
inline constexpr bool has_try_dequeue_v = has_try_dequeue<T>::value;
8080
} // namespace detail
8181

82+
// On earlier versions of compilers (especially clang) you cannot
83+
// rely on defaulted template template parameters working as intended
84+
// This overload explicitly has 1 template paramter which is what
85+
// `Logger` expects, it uses the default 512 from ReaderWriterQueue as
86+
// the hardcoded MaxBlockSize
87+
template <typename T>
88+
using rtlog_SPSC = moodycamel::ReaderWriterQueue<T, 512>;
89+
8290
/**
8391
* @brief A logger class for logging messages.
8492
* This class allows you to log messages of type LogData.
@@ -97,10 +105,15 @@ inline constexpr bool has_try_dequeue_v = has_try_dequeue<T>::value;
97105
* @tparam QType is the configurable underlying queue. By default it is a SPSC
98106
* queue from moodycamel. WARNING! It is up to the user to ensure this queue
99107
* type is real-time safe!!
108+
*
109+
* Requirements on QType:
110+
* 1. Is real-time safe
111+
* 2. Accepts one type template paramter for the type to be queued
112+
* 3. Has methods `try_enqueue` and `try_dequeue`
100113
*/
101114
template <typename LogData, size_t MaxNumMessages, size_t MaxMessageLength,
102115
std::atomic<std::size_t> &SequenceNumber,
103-
template <typename> class QType = moodycamel::ReaderWriterQueue>
116+
template <typename> class QType = rtlog_SPSC>
104117
class Logger {
105118
public:
106119
using InternalLogData = BasicLogData<LogData, MaxMessageLength>;

0 commit comments

Comments
 (0)