www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - If statements and unused template parameters in Phobos documentation

reply Rekel <paultjeadriaanse gmail.com> writes:
I found a lot of the Phobos documentation to contain template 
arguments and if statements that made no sense to me, for example:

```
  uint readf(alias format, A...) (
  auto ref A args
)
if (isSomeString!(typeof(format)));

uint readf(A...) (
  scope const(char)[] format,
  auto ref A args
);
``` https://dlang.org/library/std/stdio/file.readf.html

 From stdio.readf & stdio.File.readf. I'm assuming this is some 
kind of template, but often it seems there are more parameters in 
the first '()' part than are ever given. Am I missing something? 
Additionally, what is that if statement for? It precedes nothing.
Dec 20 2020
parent reply Max Haughton <maxhaton gmail.com> writes:
On Sunday, 20 December 2020 at 13:51:08 UTC, Rekel wrote:
 I found a lot of the Phobos documentation to contain template 
 arguments and if statements that made no sense to me, for 
 example:

 ```
  uint readf(alias format, A...) (
  auto ref A args
 )
 if (isSomeString!(typeof(format)));

 uint readf(A...) (
  scope const(char)[] format,
  auto ref A args
 );
 ``` https://dlang.org/library/std/stdio/file.readf.html

 From stdio.readf & stdio.File.readf. I'm assuming this is some 
 kind of template, but often it seems there are more parameters 
 in the first '()' part than are ever given. Am I missing 
 something? Additionally, what is that if statement for? It 
 precedes nothing.
The if is a template constraint.
Dec 20 2020
parent Rekel <paultjeadriaanse gmail.com> writes:
On Sunday, 20 December 2020 at 13:58:00 UTC, Max Haughton wrote:
 The if is a template constraint.
Ah sorry! I must have missed that part of the dlang tour. (https://tour.dlang.org/tour/en/gems/template-meta-programming) Thanks a lot!
Dec 20 2020