diff --git a/libuavcan/include/uavcan/linked_list.hpp b/libuavcan/include/uavcan/linked_list.hpp index 814eb99388..b2e02d9067 100644 --- a/libuavcan/include/uavcan/linked_list.hpp +++ b/libuavcan/include/uavcan/linked_list.hpp @@ -24,6 +24,8 @@ protected: : next_(NULL) { } + ~LinkedListNode() { } + public: T* getNextListNode() const { return next_; } diff --git a/libuavcan/include/uavcan/marshal/array.hpp b/libuavcan/include/uavcan/marshal/array.hpp index f0dd196605..80c3a11328 100644 --- a/libuavcan/include/uavcan/marshal/array.hpp +++ b/libuavcan/include/uavcan/marshal/array.hpp @@ -151,6 +151,9 @@ private: } template void initialize(...) { } +protected: + ~ArrayImpl() { } + public: typedef typename StorageType::Type ValueType; typedef typename Base::SizeType SizeType; diff --git a/libuavcan/include/uavcan/time.hpp b/libuavcan/include/uavcan/time.hpp index 2ef79433b3..fe2efe3151 100644 --- a/libuavcan/include/uavcan/time.hpp +++ b/libuavcan/include/uavcan/time.hpp @@ -20,13 +20,16 @@ class DurationBase { int64_t usec_; -public: +protected: + ~DurationBase() { } + DurationBase() : usec_(0) { StaticAssert<(sizeof(D) == 8)>::check(); } +public: static D getInfinite() { return fromUSec(std::numeric_limits::max()); } static D fromUSec(int64_t us) @@ -93,7 +96,9 @@ class TimeBase { uint64_t usec_; -public: +protected: + ~TimeBase() { } + TimeBase() : usec_(0) { @@ -101,6 +106,7 @@ public: StaticAssert<(sizeof(D) == 8)>::check(); } +public: static T getMax() { return fromUSec(std::numeric_limits::max()); } static T fromUSec(uint64_t us) @@ -256,7 +262,7 @@ std::string TimeBase::toString() const template UAVCAN_EXPORT -Stream& operator<<(Stream& s, DurationBase d) +Stream& operator<<(Stream& s, const DurationBase& d) { char buf[DurationBase::StringBufSize]; d.toString(buf); @@ -266,7 +272,7 @@ Stream& operator<<(Stream& s, DurationBase d) template UAVCAN_EXPORT -Stream& operator<<(Stream& s, TimeBase t) +Stream& operator<<(Stream& s, const TimeBase& t) { char buf[TimeBase::StringBufSize]; t.toString(buf); diff --git a/libuavcan/include/uavcan/util/compile_time.hpp b/libuavcan/include/uavcan/util/compile_time.hpp index d4ad3d0a2e..24777cbf1e 100644 --- a/libuavcan/include/uavcan/util/compile_time.hpp +++ b/libuavcan/include/uavcan/util/compile_time.hpp @@ -36,6 +36,7 @@ class UAVCAN_EXPORT Noncopyable Noncopyable& operator=(const Noncopyable&); protected: Noncopyable() { } + ~Noncopyable() { } }; /**