> 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



Reply via email to