16#ifndef TRUST_Ref_included
17#define TRUST_Ref_included
46 static_assert(false, "The old REF MACRO is now deprecated. Please use OBS_PTR instead.")
48#define OBS_PTR(_TYPE_) TRUST_Ref<_TYPE_*>
50template<
typename _CLASSE_>
58 using value_type =
typename std::remove_pointer<_CLASSE_>::type;
61 value_type * p_ =
nullptr;
68 TRUST_Ref(
const value_type& t) : p_((value_type*)&t) { }
73 p_ =
const_cast<value_type *
>(&t);
84 operator const value_type& ()
const {
return valeur(); }
85 operator value_type& () {
return valeur(); }
87 inline const value_type&
valeur()
const { assert(p_ !=
nullptr);
return *p_; }
88 inline value_type&
valeur() { assert(p_ !=
nullptr);
return *p_; }
89 inline const value_type*
operator ->()
const { assert(p_ !=
nullptr);
return p_; }
90 inline value_type*
operator ->() { assert(p_ !=
nullptr);
return p_; }
92 explicit operator bool() const noexcept {
return p_ !=
nullptr; }
99template<
typename _CLASSE_>
102 if (!r1 && !r2)
return 1;
103 if (r1->numero() == r2->numero())
return 1;
132 explicit operator bool() const noexcept {
return p_ !=
nullptr; }
class Nom Une chaine de caractere pour nommer les objets de TRUST
classe Objet_U Cette classe est la classe de base des Objets de TRUST
static constexpr bool HAS_POINTER
const Objet_U * operator->() const
const TRUST_Ref_Objet_U & operator=(const Objet_U &t)
const Objet_U & valeur() const
const value_type & valeur() const
const TRUST_Ref & operator=(const value_type &t)
TRUST_Ref(const TRUST_Ref &t)
const TRUST_Ref & operator=(const TRUST_Ref &t)
static constexpr bool HAS_POINTER
TRUST_Ref(const value_type &t)
const value_type * operator->() const
const Nom & le_nom() const =delete