Re: How can I check if a type is a pointer?

2022-06-25 Thread rempas via Digitalmars-d-learn

On Saturday, 25 June 2022 at 14:51:49 UTC, Paul Backus wrote:


Use an [`is()` expression:][1]

```d
if (is(typeof(accepted_type) == T*, T))
{
// it's a pointer
}
```

In English, you read this as "if `typeof(accepted_type)` 
matches the pattern `T*`, where `T` is a type."


If you want to learn more, I recommend reading [Adam Ruppe's 
explanation of `is()` expressions][2].


[1]: https://dlang.org/spec/expression.html#IsExpression
[2]: 
https://forum.dlang.org/post/xklcgjaqggihvhctc...@forum.dlang.org


Thank you too for this example! Have a nice day my friend!


Re: How can I check if a type is a pointer?

2022-06-25 Thread Paul Backus via Digitalmars-d-learn

On Saturday, 25 June 2022 at 14:18:10 UTC, rempas wrote:

For example, something like the following:

```d
void main() {
  char accepted_type;
  char* non_accepted_type;

  if (__traits(isPointer, typeof(accepted_type))) {
// The type is not accepted
  }
```


Use an [`is()` expression:][1]

```d
if (is(typeof(accepted_type) == T*, T))
{
// it's a pointer
}
```

In English, you read this as "if `typeof(accepted_type)` matches 
the pattern `T*`, where `T` is a type."


If you want to learn more, I recommend reading [Adam Ruppe's 
explanation of `is()` expressions][2].


[1]: https://dlang.org/spec/expression.html#IsExpression
[2]: 
https://forum.dlang.org/post/xklcgjaqggihvhctc...@forum.dlang.org


Re: How can I check if a type is a pointer?

2022-06-25 Thread rempas via Digitalmars-d-learn
On Saturday, 25 June 2022 at 14:32:27 UTC, Ola Fosheim Grøstad 
wrote:


I guess you can look at the source code for

https://dlang.org/phobos/std_traits.html#isPointer


Thank you! Nice and quick ;)

For anyone interested, here's the source code:

```d
enum bool isPointer(T) = is(T == U*, U) && __traits(isScalar, T);
```

Have a nice day my friend!


Re: How can I check if a type is a pointer?

2022-06-25 Thread Ola Fosheim Grøstad via Digitalmars-d-learn

On Saturday, 25 June 2022 at 14:18:10 UTC, rempas wrote:
In that example, the first comparison will execute the second 
branch and for the second comparison,
it will execute the first branch. Of course, this trait doesn't 
exist I used an example to show what I want

to do. Any ideas?


I guess you can look at the source code for

https://dlang.org/phobos/std_traits.html#isPointer




How can I check if a type is a pointer?

2022-06-25 Thread rempas via Digitalmars-d-learn

For example, something like the following:

```d
void main() {
  char accepted_type;
  char* non_accepted_type;

  if (__traits(isPointer, typeof(accepted_type))) {
// The type is not accepted
  }

 else { /* The type is not a pointer so its accepted */ }

  if (__traits(isPointer, typeof(non_accepted_type))) {
// The type is not accepted
  }

 else { /* The type is not a pointer so its accepted */ }
}
```

In that example, the first comparison will execute the second 
branch and for the second comparison,
it will execute the first branch. Of course, this trait doesn't 
exist I used an example to show what I want

to do. Any ideas?