Operator overloading of native types?
Simen Kjaeraas
simen.kjaras at gmail.com
Thu Dec 13 16:07:24 PST 2012
On 2012-12-14, 00:19, H. S. Teoh wrote:
> I'd like to overload the '*' operator to work with string arguments. Is
> it possible? I tried the following, but apparently operator overloading
> doesn't work at the package level?
>
> string opBinary(string op)(string repeatMe, int thisManyTimes)
> if (op=="*")
> {
> auto app = appender!string();
> while (thisManyTimes > 0) {
> app.put(repeatMe);
> thisManyTimes--;
> }
> return app.data;
> }
>
> void main() {
> writeln("spam" * 3); // compile error
> }
>
> Or is this just a very bad idea? ;-)
Like bearophile said, overloaded operators need to be defined inside
one of the types on which they should operate. Since built-in types
cannot be modified, one cannot overload operators on them.
--
Simen
More information about the Digitalmars-d-learn
mailing list