www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - const-correct structs, best practices?

reply Nick Sabalausky <SeeWebsiteToContactMe semitwist.com> writes:
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?
Aug 21 2015
next sibling parent "Meta" <jared771 gmail.com> writes:
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.
Aug 21 2015
prev sibling parent reply "Dicebot" <public dicebot.lv> writes:
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 ;)
Aug 21 2015
parent reply Nick Sabalausky <SeeWebsiteToContactMe semitwist.com> writes:
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!
Aug 21 2015
parent Steven Schveighoffer <schveiguy yahoo.com> writes:
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
Aug 21 2015