volatile



  • Es ist ganz sicher eine Altlast, aber es gibt noch unglaublich viele C++ Programmierer (die Mehrzahl?), die das so schreibt. Ich fürchte, damit muss man sich abfinden.



  • Optimizer schrieb:

    Ich fürchte, damit muss man sich abfinden.

    mich stört's nicht. c++ gibt dem user viele freiheiten. (nur c ist noch besser :D). dass dabei manchmal so'n mist rauskommt wie 'heimliche' konvertierung von pointern in bools muss man einfach tolerieren...



  • HumeSikkins schrieb:

    template <class T>
    ostream& operator<<(ostream& os, volatile T* ptr)
    {
         // ...
         os << const_cast<T*>(ptr);
         return os;     
    }
    

    ist aber nicht viel besser, als UB 😉
    sollte doch wohl eher so heißen:

    template <class T>
    ostream& operator<<(ostream& os, T const volatile * ptr) 
    {
         // ...
         os.operator<<(const_cast<T*>(ptr));
         //oder: out << static_cast<void*>(const_cast<T*>(t));
         return os;     
    }
    

Anmelden zum Antworten