narrow und wide strings generierung mit templates



  • hallo leute

    gibt es eine moeglichkeit mit templates narrow und wide strings zu erstellen, wobei strings jetzt nicht unbedingt im sinne von basic_string gemeint ist.

    folgendes beispiel;

    auto operator<<(std::ostream, const my_class &v) -> std::ostream&
    {
       out << "value=" << v.write_to_stream(out);
       return out;
    }
    
    auto operator<<(std::wostream, const my_class &v) -> std::wostream&
    {
       out << L"value=" << v.write_to_stream(out);
       return out;
    }
    

    wenn ich jetzt da was aendern will, muss ich naetuerlich beide operator versionen aendern.

    was ich gerne haette waere ungefaehr sowas:

    template<class T>
    auto operator<<(std::basic_ostream<T> &out, const my_class &v) -> std::basic_ostream<T>&
    {
       out << special_func<T>("value=") << v.write_to_stream(out);
    
       return out;
    }
    

    es soll dabei zur laufzeit nicht bei jedem aufruf des operators von narrow->wide convertiert werden oder umgekehrt.
    wie ich das mit dem preprozessor hinbekomme, weiß ich. aber ich will den nur in notfaellen, wenn es nicht anders geht, verwenden.

    Meep Meep


Anmelden zum Antworten