Comment out of line A will suppress the error in line B. ---- template ConstOf(T) { alias const(T) ConstOf; } void main() { shared(ConstOf!(int[])) x; // line A struct S3 { int[10] a; } shared(S3) sh3; shared(int[]) sh3sub = sh3.a[]; assert(pointsTo(sh3sub)); // line B // Error: cast(shared(const(int[])))sh3sub is not an lvalue } bool pointsTo(S)(ref const S source) @trusted pure nothrow { return true; }
https://github.com/D-Programming-Language/dmd/pull/797
Commit pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/0ac2cd091b51c158ecdad0c966e5ad910d2837c9 Merge pull request #797 from 9rnsr/fix7682 Issue 7682 - shared array type and "cast() is not an lvalue" error