Is it possible to "overload" based on visibility?

Steven Schveighoffer schveiguy at gmail.com
Fri Sep 25 14:21:59 UTC 2020


On 9/25/20 10:12 AM, 60rntogo wrote:
> On Friday, 25 September 2020 at 13:15:27 UTC, Steven Schveighoffer wrote:
ou can use auto ref to alleviate that:
>>
>> int x()(auto ref Foo f) // needs to be a template for auto ref to work
> 
> That's a good point, thanks. Since we are on that topic, how would that 
> differ from the following?
> 
> int x(in Foo f)

in does not mean "take by reference", it means "scope const"

> And going further, if instead of int I wanted to return something that 
> might also be expensive to copy, what would be the best way to declare 
> the function?

It depends on if you want to return a copy. If you want to return a 
reference if the source is a reference, use auto ref on the return as 
well. But if you still want to protect the internal data, it would have 
to be const.

-Steve


More information about the Digitalmars-d-learn mailing list