digitalmars.D.learn - Getting the mutable version of a type
- Magnus Lie Hetland (22/22) Mar 02 2012 I'm writing a template for generating data of some possibly immutable
- =?UTF-8?B?QWxpIMOHZWhyZWxp?= (15/18) Mar 02 2012 Yes, std.traits.Unqual:
- Magnus Lie Hetland (5/13) Mar 02 2012 Aah -- awesome. Thanks!
I'm writing a template for generating data of some possibly immutable type -- e.g., a string. What I'm wondering is, is there some way of accessing the mutable version of an immutable type? I mean, I could do something like (for strings and related immutable arrays)... void func(T)(ref immutable(T)[] arg) { T[] res; ... arg = cast(immutable(T)[]) res; } But it would be useful to be able to write the same template for both mutable and immutable types, and just use something like void func(T)(ref T arg) { mutable(T) res; ... arg = cast(T) res; } Is there something like that? (E.g., a template in Phobos or something.) I guess I could do a match with an is() expression to extract the type, perhaps. -- Magnus Lie Hetland http://hetland.org
Mar 02 2012
On 03/02/2012 02:18 AM, Magnus Lie Hetland wrote:I'm writing a template for generating data of some possibly immutable type -- e.g., a string. What I'm wondering is, is there some way of accessing the mutable version of an immutable type?Yes, std.traits.Unqual: http://dlang.org/phobos/std_traits.html#Unqual import std.stdio; import std.traits; void foo(T)() { Unqual!T temp; writeln(typeof(temp).stringof); } void main() { foo!(immutable int)(); } Ali
Mar 02 2012
On 2012-03-02 11:23:20 +0000, Ali Çehreli said:On 03/02/2012 02:18 AM, Magnus Lie Hetland wrote:Aah -- awesome. Thanks! -- Magnus Lie Hetland http://hetland.orgI'm writing a template for generating data of some possibly immutable type -- e.g., a string. What I'm wondering is, is there some way of accessing the mutable version of an immutable type?Yes, std.traits.Unqual: http://dlang.org/phobos/std_traits.html#Unqual
Mar 02 2012