Thread overview
const-correct structs, best practices?
Aug 21, 2015
Nick Sabalausky
Aug 21, 2015
Meta
Aug 21, 2015
Dicebot
Aug 21, 2015
Nick Sabalausky
August 21, 2015
Is there a good posting somewhere that summarizes the current best practices for making const-correct (ie works for all of mutable/const/immutable) structs?
August 21, 2015
On Friday, 21 August 2015 at 15:00:04 UTC, Nick Sabalausky wrote:
> Is there a good posting somewhere that summarizes the current best practices for making const-correct (ie works for all of mutable/const/immutable) structs?

Prepare for pain.
August 21, 2015
On Friday, 21 August 2015 at 15:00:04 UTC, Nick Sabalausky wrote:
> Is there a good posting somewhere that summarizes the current best practices for making const-correct (ie works for all of mutable/const/immutable) structs?

- mark methods const
- avoid reference type fields

;)
August 21, 2015
On 08/21/2015 12:22 PM, Dicebot wrote:
> On Friday, 21 August 2015 at 15:00:04 UTC, Nick Sabalausky wrote:
>> Is there a good posting somewhere that summarizes the current best
>> practices for making const-correct (ie works for all of
>> mutable/const/immutable) structs?
>
> - mark methods const
> - avoid reference type fields
>
> ;)

What about inout?

I have a struct that supports operator overloading, returning the struct's own type. After fiddling with that, I got a good laugh out of Meta's comment, and I think he may be right!

August 21, 2015
On 8/21/15 12:31 PM, Nick Sabalausky wrote:
> On 08/21/2015 12:22 PM, Dicebot wrote:
>> On Friday, 21 August 2015 at 15:00:04 UTC, Nick Sabalausky wrote:
>>> Is there a good posting somewhere that summarizes the current best
>>> practices for making const-correct (ie works for all of
>>> mutable/const/immutable) structs?
>>
>> - mark methods const
>> - avoid reference type fields
>>
>> ;)
>
> What about inout?
>
> I have a struct that supports operator overloading, returning the
> struct's own type. After fiddling with that, I got a good laugh out of
> Meta's comment, and I think he may be right!
>

inout should work when returning a piece of the struct. I found it incredibly easy when instrumenting dcollections. Just use it like you would const.

Where you are going to run into problems is if you have things like ranges that need to partially cast to const.

-Steve