Thread overview | |||||
---|---|---|---|---|---|
|
March 17, 2015 How to test for type without refs? | ||||
---|---|---|---|---|
| ||||
I thought that in: T* user(T)() { static assert (T.sizeof < bfHdr.user_.length); static assert (__traits(isPOD, T) ); return cast(T*) bfHdr.user_.ptr; } the line: static assert (__traits(isPOD, T) ); would test for there not being any embedded refs, pointers, etc., but unittest { ... struct thead2 { string test; } auto userTest2 = bf.user!(thead2)(); } executes without complaint. Is there a better way? |
March 17, 2015 Re: How to test for type without refs? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Charles Hixson | On Tuesday, 17 March 2015 at 14:06:19 UTC, Charles Hixson wrote: > I thought that in: > T* user(T)() > { static assert (T.sizeof < bfHdr.user_.length); > static assert (__traits(isPOD, T) ); > return cast(T*) bfHdr.user_.ptr; > } > the line: > static assert (__traits(isPOD, T) ); > > would test for there not being any embedded refs, pointers, etc., but > unittest > { > ... > struct thead2 { string test; } > auto userTest2 = bf.user!(thead2)(); > } > executes without complaint. Is there a better way? There's std.traits.hasIndirections <http://dlang.org/phobos/std_traits.html#hasIndirections>. |
March 17, 2015 Re: How to test for type without refs? | ||||
---|---|---|---|---|
| ||||
Posted in reply to anonymous |
On 03/17/2015 07:27 AM, anonymous via Digitalmars-d-learn wrote:
> On Tuesday, 17 March 2015 at 14:06:19 UTC, Charles Hixson wrote:
>> I thought that in:
>> T* user(T)()
>> { static assert (T.sizeof < bfHdr.user_.length);
>> static assert (__traits(isPOD, T) );
>> return cast(T*) bfHdr.user_.ptr;
>> }
>> the line:
>> static assert (__traits(isPOD, T) );
>>
>> would test for there not being any embedded refs, pointers, etc., but
>> unittest
>> {
>> ...
>> struct thead2 { string test; }
>> auto userTest2 = bf.user!(thead2)();
>> }
>> executes without complaint. Is there a better way?
>
> There's std.traits.hasIndirections <http://dlang.org/phobos/std_traits.html#hasIndirections>.
>
Thanks. That did the job. (I was looking at ...dmd-doc/html/d/traits.html instead.)
|
Copyright © 1999-2021 by the D Language Foundation