diff options
Diffstat (limited to 'shared/loki/RefToValue.h')
-rw-r--r-- | shared/loki/RefToValue.h | 96 |
1 files changed, 48 insertions, 48 deletions
diff --git a/shared/loki/RefToValue.h b/shared/loki/RefToValue.h index 248de792..3f7ecfef 100644 --- a/shared/loki/RefToValue.h +++ b/shared/loki/RefToValue.h @@ -2,12 +2,12 @@ // The Loki Library // Copyright (c) 2006 Richard Sposato // Copyright (c) 2006 Peter Kümmel -// Permission to use, copy, modify, distribute and sell this software for any -// purpose is hereby granted without fee, provided that the above copyright -// notice appear in all copies and that both that copyright notice and this +// Permission to use, copy, modify, distribute and sell this software for any +// purpose is hereby granted without fee, provided that the above copyright +// notice appear in all copies and that both that copyright notice and this // permission notice appear in supporting documentation. -// The authors make no representations about the -// suitability of this software for any purpose. It is provided "as is" +// The authors make no representations about the +// suitability of this software for any purpose. It is provided "as is" // without express or implied warranty. //////////////////////////////////////////////////////////////////////////////// #ifndef LOKI_REFTOVALUE_INC_ @@ -19,50 +19,50 @@ namespace Loki { - //////////////////////////////////////////////////////////////////////////////// - /// \class RefToValue - /// - /// \ingroup SmartPointerGroup - /// Transports a reference as a value - /// Serves to implement the Colvin/Gibbons trick for SmartPtr/ScopeGuard - //////////////////////////////////////////////////////////////////////////////// - - template <class T> - class RefToValue - { - public: - - RefToValue(T& ref) : ref_(ref) - {} - - RefToValue(const RefToValue& rhs) : ref_(rhs.ref_) - {} - - operator T& () const - { - return ref_; - } - - private: - // Disable - not implemented - RefToValue(); - RefToValue& operator=(const RefToValue&); - - T& ref_; - }; - - - //////////////////////////////////////////////////////////////////////////////// - /// \ingroup ExceptionGroup - /// RefToValue creator. - //////////////////////////////////////////////////////////////////////////////// - - template <class T> - inline RefToValue<T> ByRef(T& t) +//////////////////////////////////////////////////////////////////////////////// +/// \class RefToValue +/// +/// \ingroup SmartPointerGroup +/// Transports a reference as a value +/// Serves to implement the Colvin/Gibbons trick for SmartPtr/ScopeGuard +//////////////////////////////////////////////////////////////////////////////// + +template <class T> +class RefToValue +{ +public: + + RefToValue(T& ref) : ref_(ref) + {} + + RefToValue(const RefToValue& rhs) : ref_(rhs.ref_) + {} + + operator T& () const { - return RefToValue<T>(t); - } - + return ref_; + } + +private: + // Disable - not implemented + RefToValue(); + RefToValue& operator=(const RefToValue&); + + T& ref_; +}; + + +//////////////////////////////////////////////////////////////////////////////// +/// \ingroup ExceptionGroup +/// RefToValue creator. +//////////////////////////////////////////////////////////////////////////////// + +template <class T> +inline RefToValue<T> ByRef(T& t) +{ + return RefToValue<T>(t); +} + } |