Template constraint: T is a value type

Jesse Phillips via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Oct 30 20:41:37 PDT 2014


On Wednesday, 29 October 2014 at 11:49:59 UTC, John Colvin wrote:
> On Wednesday, 29 October 2014 at 10:01:18 UTC, Gareth Foster 
> wrote:
>> Hi there,
>>
>> I'm looking to write a function template that operates only on 
>> value types. Basically I'm looking for an equivalent of
>>
>>  where T: struct
>>
>> from C# (http://msdn.microsoft.com/en-us/library/d5x73970.aspx)
>>
>> I was thinking that maybe using
>>
>>  template Foo(T) if (is(T : struct) or is(T: union)) { ... }
>>
>> or perhaps
>>
>>  template Foo(T) if (!is(T : class)) { ... }
>>
>> would be correct, but I fear the first may be too limiting 
>> (would simple data types such as int, char etc be allowed 
>> here? I'd guess not.) and the second may be too lax.
>>
>> Any advice? Am I even going in remotely the right direction? 
>> Thanks.
>
> std.traits.hasIndirections any use for you?

To more complete this:

     template Foo(T) if(!hasIndirections!T)

http://dlang.org/phobos/std_traits.html#hasIndirections


More information about the Digitalmars-d-learn mailing list