Outils pour utilisateurs

Outils du site


prog:cpp:propagate_const

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
prog:cpp:propagate_const [2025/07/06 18:13] – Ajout de indirect_value rootprog:cpp:propagate_const [2025/07/06 19:06] (Version actuelle) – Fix value_types root
Ligne 162: Ligne 162:
 =====indirect_value===== =====indirect_value=====
  
-''indirect_value'' est un ''std::unique_ptr'' avec la préservation de ''const''. Il n'y a pas d'équivalent avec ''shared_ptr''.+''indirect_value'' est un ''std::unique_ptr'' avec la préservation de ''const''. Il n'y a pas d'équivalent avec ''shared_ptr'' / ''pointeur'' / ''référence''.
  
 ====Pointeur==== ====Pointeur====
Ligne 195: Ligne 195:
 </code> </code>
  
 +=====value_types=====
 +
 +====Référence====
 +
 +<code cpp>
 +#include <https://raw.githubusercontent.com/jbcoe/value_types/refs/heads/main/polymorphic.h>
 +
 +struct Y {
 +  Y() : m_ptrX(m_X) {};
 +
 +  void f() const {
 +    std::cout << "f (const)\n";
 +    m_ptrX->g();
 +  }
 +
 +  void f() {
 +    std::cout << "f (non-const)\n";
 +    m_ptrX->g();
 +  }
 +
 +  xyz::indirect<X> m_ptrX;
 +  X m_X;
 +};
 +</code>
 +
 +Rendu :
 +
 +<code>
 +f (non-const)
 +g (non-const)
 +f (const)
 +g (const)
 +</code>
 +
 +====Pointeur / allocation dynamique====
 +
 +<code cpp>
 +#include <https://raw.githubusercontent.com/jbcoe/value_types/refs/heads/main/polymorphic.h>
 +
 +struct Y
 +{
 +  Y() : m_ptrX(xyz::polymorphic<X>()) {};
 + 
 +  void f() const {
 +    std::cout << "f (const)\n";
 +    m_ptrX->g();
 +  }
 + 
 +  void f() {
 +    std::cout << "f (non-const)\n";
 +    m_ptrX->g();
 +  }
 + 
 +  xyz::polymorphic<X> m_ptrX;
 +};
 +</code>
 +
 +Rendu :
 +
 +<code>
 +f (non-const)
 +g (non-const)
 +f (const)
 +g (const)
 +</code>
prog/cpp/propagate_const.1751818401.txt.gz · Dernière modification : de root