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
|