How can I check if template variable parameter is iterable before handle it?
Marcone
marcone at email.com
Sun Feb 21 13:08:18 UTC 2021
On Sunday, 21 February 2021 at 12:47:46 UTC, Boris Carvajal wrote:
> On Sunday, 21 February 2021 at 11:58:11 UTC, Marcone wrote:
>> import std;
>>
>> void foo(T)(T bar){
>> static if (bar.isiterable()) // Need Somethin to check if bar
>> is iterable.
>> {
>> // Execute it if bar is iterable.
>> foreach (i; bar)
>> {
>>
>> }
>> }
>> else {
>> // Execute it if bar is NOT iterable.
>> }
>>
>> }
>>
>> void main(){
>> foo(1);
>> foo([1, 2, 3, 4, 5]);
>> }
>
> https://dlang.org/library/std/traits/is_iterable.html
>
> import std.traits : isIterable;
>
> void foo(T)(T bar){
> static if (isIterable!T)
> {
> ...
Thank you.
// Function isiterable()
bool isiterable(T)(T arg) nothrow {try {static if
(isIterable!T){return true;} else {return false;}}
catch(Throwable){return false;}}
More information about the Digitalmars-d-learn
mailing list