Thread overview | |||||
---|---|---|---|---|---|
|
February 11, 2020 about const ref | ||||
---|---|---|---|---|
| ||||
I need to be sure about "const ref". Based on the following function, does it mean: Type can be string or an integral type. (a) k1 is not copied on function calls (b) k1 cannot be modified inside function Please correct me if I am wrong. Can storage class "in" be used to satisfy (a) and (b)? void doIt(const ref Type k1){ .... } Type k = ...; doit(k); |
February 11, 2020 Re: about const ref | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ferhat Kurtulmuş | On Tuesday, 11 February 2020 at 07:51:04 UTC, Ferhat Kurtulmuş wrote:
> I need to be sure about "const ref". Based on the following function, does it mean:
>
> Type can be string or an integral type.
>
> (a) k1 is not copied on function calls
> (b) k1 cannot be modified inside function
>
> Please correct me if I am wrong. Can storage class "in" be used to satisfy (a) and (b)?
>
>
> void doIt(const ref Type k1){
> ....
> }
>
> Type k = ...;
>
> doit(k);
You're correct for 'a' and 'b'. However `in` only entails `const`, so it is not an exact replacement.
Additionally, you might want to add `scope` to show that the parameter does not escape.
Note that a big limitation on `const ref` parameters at the moment is that it does not accept literals, which is something Andrei talked about a few years ago at DConf (or was it last year?).
|
February 11, 2020 Re: about const ref | ||||
---|---|---|---|---|
| ||||
Posted in reply to Mathias Lang | On Tuesday, 11 February 2020 at 09:20:11 UTC, Mathias Lang wrote: > On Tuesday, 11 February 2020 at 07:51:04 UTC, Ferhat Kurtulmuş wrote: > You're correct for 'a' and 'b'. However `in` only entails `const`, so it is not an exact replacement. > Additionally, you might want to add `scope` to show that the parameter does not escape. > > Note that a big limitation on `const ref` parameters at the moment is that it does not accept literals, which is something Andrei talked about a few years ago at DConf (or was it last year?). Thank you for clarification. |
Copyright © 1999-2021 by the D Language Foundation