Thread overview
shouldn't const cast always be allowed (even if shunned)
Nov 15, 2012
Dan
Nov 15, 2012
Simen Kjaeraas
Nov 16, 2012
Jonathan M Davis
November 15, 2012
There are times when casting away const is needed.  Structs that
define opCast can get in the way of this.  For instance, the cast
below fails, but I think it should always be allowed. So, if the
source type and cast type are the same except for const qualifiers,
there is no need to consider custom opCast members. Is a reasonable
suggestion for the language?

The cast here fails because it is considering custom opCast methods,
but that is not helpful.

Thanks
Dan

---------------------
import std.bitmanip;
void main() {
  const(BitArray) cba;
  cast()cba;
}

November 15, 2012
On 2012-23-15 15:11, Dan <dbdavidson@yahoo.com> wrote:

> There are times when casting away const is needed.  Structs that
> define opCast can get in the way of this.  For instance, the cast
> below fails, but I think it should always be allowed. So, if the
> source type and cast type are the same except for const qualifiers,
> there is no need to consider custom opCast members. Is a reasonable
> suggestion for the language?
>
> The cast here fails because it is considering custom opCast methods,
> but that is not helpful.
>
> Thanks
> Dan
>
> ---------------------
> import std.bitmanip;
> void main() {
>    const(BitArray) cba;
>    cast()cba;
> }
>

That does indeed seem reasonable. File an enhancement request.

-- 
Simen
November 16, 2012
On Thursday, November 15, 2012 15:23:40 Dan wrote:
> There are times when casting away const is needed. Structs that
> define opCast can get in the way of this. For instance, the cast
> below fails, but I think it should always be allowed. So, if the
> source type and cast type are the same except for const
> qualifiers,
> there is no need to consider custom opCast members. Is a
> reasonable
> suggestion for the language?
> 
> The cast here fails because it is considering custom opCast
> methods,
> but that is not helpful.
> 
> Thanks
> Dan
> 
> ---------------------
> import std.bitmanip;
> void main() {
> const(BitArray) cba;
> cast()cba;
> }

http://d.puremagic.com/issues/show_bug.cgi?id=5747

- Jonathan M Davis