FromthePublisher
Acknowledgments
Introduction
1.DeducingTypes
Item1:Understandtemplatetypededuction.
Item2:Understandautotypededuction.
Item3:Understanddecltype.
Item4:Knowhowtoviewdeducedtypes.
2.auto
Item5:Preferautotoexplicittypedeclarations.
Item6:Usetheexplicitlytypedinitializeridiomwhenautodeducesundesiredtypes.
3.MovingtoModernC++
Item7:Distinguishbetween()and{}whencreatingobjects.
Item8:Prefernullptrto0andNULL.
Item9:Preferaliasdeclarationstotypedefs.
Item10:Preferscopedenumstounscopedenuns.
Item11:Preferdeletedfunctionstoprivateundefinedones.
Item12:Declareoverridingfunctionsoverri.de.
Item13:Preferconst_iteratorstoiterators.
Item14:Declarefunctionsnoexceptiftheywon'temitexceptions.
Item15:Useconstexprwheneverpossible.
Item16:Makeconstmemberfunctionsthreadsafe.
Item17:Understandspecialmemberfunctiongeneration.
4.SmartPointers
Item18:Usestd::unique_ptrforexclusive-ownershipresourcemanagement.
Item19:Usestd::shared_ptrforshared-ownershipresourcemanagement.
Item20:Usestd::weak_ptrforstd::shared_ptr-likepointersthatcandangle.
Item21:Preferstd::make_uniqueandstd::make_sharedtodirectuseofnew.
Item22:WhenusingthePimplIdiom,definespecialmemberfunctionsintheimplementationfile.
5.RvalueReferences,MoveSemantics,andPerfectForwarding
Item23:Understandstd::moveandstd::forward.
Item24:Distinguishuniversalreferencesfromrvaluereferences.
Item25:Usestd::moveonrvaluereferences,std::forwardonuniversalreferences.
Item26:Avoidoverloadingonuniversalreferences.
Item27:Familiarizeyourselfwithalternativestooverloadingonuniversalreferences.
Item28:Understandreferencecollapsing.
Item29:Assumethatmoveoperationsarenotpresent,notcheap,andnotused.
Item30:Familiarizeyourselfwithperfectforwardingfailurecases.
6.LambdaExpressions
Item31:Avoiddefaultcapturemodes.
Item32:Useinitcapturetomoveobjectsintoclosures.
Item33:Usedecltypeonauto&¶meterstostd::forwardthem.
Item34:Preferlambdastostd::bind.
7.TheConcurrencyAPI
Item35:Prefertask-basedprogrammingtothread-based.
Item36:Specifystd::launch::asyncifasynchronicityisessential.
Item37:Makestd::threadsunjoinableonallpaths.
Item38:Beawareofvaryingthreadhandledestructorbehavior.
Item39:Considervoi_dfuturesforone-shoteventcommunication.
Item40:Usestd::atoni.cforconcurrency,volatileforspecialmemory.
8.Tweaks
Item41:Considerpassbyvalueforcopyableparametersthatarecheaptomoveandalwayscopied.
Item42:Consideremplacementinsteadofinsertion.
Index