| 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
Permalink
Reply