inout question

ketmar ketmar at ketmar.no-ip.org
Mon Feb 12 05:37:23 UTC 2018


Norm wrote:

> Hi,
>
> I'm new to D so can someone explain to me what is happening here?
>
>
> void func(const char* s, char** e) {
>      import core.stdc.stdlib;
>      auto result = strtod(s, e);
> }
>
> Error: function core.stdc.stdlib.strtod (scope inout(char)* nptr, scope 
> inout(char)** endptr) is not callable using argument types (const(char*), 
> char**)

there is a difference between `const char* s`, and `const(char)* s`.
the former means that both `s` and `*s` cannot change, the latter means 
that `s` can be changed, but `*s` cannot. i.e. the first form means that 
you cannot do pointer arithmetic with `s`, while with second form you can 
(only *contents* are const, not the pointer itself).

that is, `strtod` wants const *contents*, but not pointer. `const(char)* s`.


More information about the Digitalmars-d-learn mailing list