> On 23 Jan 2020, at 13:43, lemzwerg--- via Discussions on LilyPond development > <lilypond-devel@gnu.org> wrote: > >> Why is this ugly? std::string is really the name of the class. > > No question, but I would prefer > > struct xxx { > using std:string; > > string foo; > string bar; > string baz; > } > } > > to > > struct xxx { > std::string foo; > std::string bar; > std::string baz; > } > > for example, to increase legibility if there are many strings.
When using ones own namespace reusing names of std, then the external object must be qualified. For example, namespace lly { class string { public: string(const std::string&); explicit operator std::string() const; }; … inline string operator+(string& x, string& y) { return std::string(x) + std::string(y); } } // namespace lly