Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <memory> 7 : 8 0 : namespace StdHelpers { 9 : /// @{ 10 : /// \brief Dereference a `std::unique_ptr` or just get the value back. 11 : template <typename T, typename Deleter> 12 1 : const T& retrieve(const std::unique_ptr<T, Deleter>& t) { 13 : return *t; 14 : } 15 : 16 : template <typename T> 17 1 : const T& retrieve(const T& t) { 18 : return t; 19 : } 20 : 21 : template <typename T, typename Deleter> 22 1 : T& retrieve(std::unique_ptr<T, Deleter>& t) { 23 : return *t; 24 : } 25 : 26 : template <typename T> 27 1 : T& retrieve(T& t) { 28 : return t; 29 : } 30 : /// @} 31 : } // namespace StdHelpers