[ ] Add explicit specifier to any constructor that has a single non-default parameter and which cannot be used for implicit conversion and copy-initialisation (see e.g. the Edge constructor).
[ ] Make appropriate use of auto keyword in range-based for loops.
[ ] Add override specifier to any function that is virtual and is overriding a virtual function from a base class.
explicit
specifier to any constructor that has a single non-default parameter and which cannot be used for implicit conversion and copy-initialisation (see e.g. the Edge constructor).auto
keyword in range-based for loops.override
specifier to any function that is virtual and is overriding a virtual function from a base class.new
/delete
with proper ownership representation using smart pointers and move semantics blog post explaining ownership/smart pointers. Could follow c++ core guidelines