Thread overview | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
January 19, 2021 How can I check to see if template type is an array? | ||||
---|---|---|---|---|
| ||||
Hi all, I need to be able to check in a template whether the type given is an array type so that I can do some different logic. How can I do this? I would have thought that if(is(T == [])) would work, but no. Thanks in advance |
January 19, 2021 Re: How can I check to see if template type is an array? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Tim | On Tuesday, 19 January 2021 at 22:26:52 UTC, Tim wrote:
> I need to be able to check in a template whether the type given is an array type so that I can do some different logic. How can I do this?
`if(is(T == E[], E))` or `isDynamicArray!T` is you `import std.traits;`
|
January 19, 2021 Re: How can I check to see if template type is an array? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Tim | On Tuesday, 19 January 2021 at 22:26:52 UTC, Tim wrote:
> Hi all,
>
> I need to be able to check in a template whether the type given is an array type so that I can do some different logic. How can I do this? I would have thought that if(is(T == [])) would work, but no.
>
>
> Thanks in advance
You've almost got it. The correct syntax is `is(T == U[], U)`. You can read it as "there exists some type U such that T == U[]".
|
January 19, 2021 Re: How can I check to see if template type is an array? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Paul Backus | On Tuesday, 19 January 2021 at 22:31:47 UTC, Paul Backus wrote:
> You've almost got it. The correct syntax is `is(T == U[], U)`. You can read it as "there exists some type U such that T == U[]".
Thanks! Do I need to specify U in the template function?
|
January 19, 2021 Re: How can I check to see if template type is an array? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Tim | On Tuesday, 19 January 2021 at 22:34:04 UTC, Tim wrote:
> On Tuesday, 19 January 2021 at 22:31:47 UTC, Paul Backus wrote:
>> You've almost got it. The correct syntax is `is(T == U[], U)`. You can read it as "there exists some type U such that T == U[]".
>
> Thanks! Do I need to specify U in the template function?
No, only inside the is(...) expression.
|
January 19, 2021 Re: How can I check to see if template type is an array? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Paul Backus | On Tuesday, 19 January 2021 at 22:36:47 UTC, Paul Backus wrote:
> On Tuesday, 19 January 2021 at 22:34:04 UTC, Tim wrote:
>> On Tuesday, 19 January 2021 at 22:31:47 UTC, Paul Backus wrote:
>>> You've almost got it. The correct syntax is `is(T == U[], U)`. You can read it as "there exists some type U such that T == U[]".
>>
>> Thanks! Do I need to specify U in the template function?
>
> No, only inside the is(...) expression.
What if it is a static array i.e. double[3]?
|
January 19, 2021 Re: How can I check to see if template type is an array? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Tim | On Tuesday, 19 January 2021 at 22:38:41 UTC, Tim wrote:
> On Tuesday, 19 January 2021 at 22:36:47 UTC, Paul Backus wrote:
>> On Tuesday, 19 January 2021 at 22:34:04 UTC, Tim wrote:
>>> On Tuesday, 19 January 2021 at 22:31:47 UTC, Paul Backus wrote:
>>>> You've almost got it. The correct syntax is `is(T == U[], U)`. You can read it as "there exists some type U such that T == U[]".
>>>
>>> Thanks! Do I need to specify U in the template function?
>>
>> No, only inside the is(...) expression.
>
> What if it is a static array i.e. double[3]?
is(T == U[n], U, size_t n)
|
January 19, 2021 Re: How can I check to see if template type is an array? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Paul Backus | On Tuesday, 19 January 2021 at 22:45:19 UTC, Paul Backus wrote:
> On Tuesday, 19 January 2021 at 22:38:41 UTC, Tim wrote:
>> On Tuesday, 19 January 2021 at 22:36:47 UTC, Paul Backus wrote:
>>> On Tuesday, 19 January 2021 at 22:34:04 UTC, Tim wrote:
>>>> On Tuesday, 19 January 2021 at 22:31:47 UTC, Paul Backus wrote:
>>>>> You've almost got it. The correct syntax is `is(T == U[], U)`. You can read it as "there exists some type U such that T == U[]".
>>>>
>>>> Thanks! Do I need to specify U in the template function?
>>>
>>> No, only inside the is(...) expression.
>>
>> What if it is a static array i.e. double[3]?
>
> is(T == U[n], U, size_t n)
Easy, thanks a lot!
|
Copyright © 1999-2021 by the D Language Foundation