From 4700cb1602cff978b3aa56a4fa91555a3a0c53e1 Mon Sep 17 00:00:00 2001 From: Mathew Sutcliffe Date: Sun, 20 Mar 2016 00:31:59 +0000 Subject: [PATCH] refs #624 Use ref qualifiers. --- src/blackmisc/iterator.h | 6 ++---- src/blackmisc/lockfree.h | 8 +------- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/src/blackmisc/iterator.h b/src/blackmisc/iterator.h index af3f15272..ee6eef6d0 100644 --- a/src/blackmisc/iterator.h +++ b/src/blackmisc/iterator.h @@ -92,10 +92,8 @@ namespace BlackMisc { PointerWrapper(typename std::decay::type *obj) : m_obj(std::move(*obj)) {} typename std::decay::type const *operator ->() const { return &m_obj; } - typename std::decay::type operator *() const { return m_obj; } - // TODO replace operator* above with the following, when our compilers support C++11 ref-qualifiers - //typename std::decay::type operator *() const & { return m_obj; } - //typename std::decay::type operator *() && { return std::move(m_obj); } + typename std::decay::type operator *() const & { return m_obj; } + typename std::decay::type operator *() && { return std::move(m_obj); } private: const typename std::decay::type m_obj; }; diff --git a/src/blackmisc/lockfree.h b/src/blackmisc/lockfree.h index 2c6c562c6..1d10a5aab 100644 --- a/src/blackmisc/lockfree.h +++ b/src/blackmisc/lockfree.h @@ -19,12 +19,6 @@ #include #include -#if _MSC_VER < 1900 -#define BLACK_RVALUE_REF_QUALIFIER -#else -#define BLACK_RVALUE_REF_QUALIFIER && -#endif - // http://www.drdobbs.com/lock-free-data-structures/184401865 // http://en.cppreference.com/w/cpp/memory/shared_ptr/atomic @@ -320,7 +314,7 @@ namespace BlackMisc //! \param function The LockFree values from which this LockFreeMulti was constructed will be passed as arguments to this functor. //! \return The value returned by the functor, if any. template - auto operator ()(F &&function) BLACK_RVALUE_REF_QUALIFIER -> decltype(function(std::declval()...)) + auto operator ()(F &&function) && -> decltype(function(std::declval()...)) { return call(std::forward(function), Private::make_index_sequence()); }