// https://issues.dlang.org/show_bug.cgi?id=21802 struct A { auto opAssign(lazy void foo) { foo(); } auto opOpAssign(string op)(lazy void foo) { foo(); } } class C { auto opAssign(lazy void foo) { foo(); } auto opOpAssign(string op)(lazy void foo) { foo(); } } void bar(int x) { } void main () { A a; a ~= bar (1); // OK a = bar (1); // Error: expression bar(1) is void and has no value C c = new C; c ~= bar(1); c = bar(1); }