I want to write some utility functions that operate on Synchronized<T> objects. I could write 2 versions one for const and one for non-const but that seems silly. Alternatively I could write 1 version just for const. I'm not sure if there's any downside to this because it seems like you can still modify the "locked" object via Synchronized::wlock method.
folly::Synchronized allows calling wlock (ie lock exclusively in write mode) on both a const Synchronized and non-const Synchronized object -- link.
However they return different output types. Is there any difference between LockedPtr and ConstWLockedPtr? In particular I'm interested in differences in functionality & in particular any lack of functionality with ConstWLockedPtr.
wlockdoes not compile when used on aconst folly::Synchronized<T>&. So you must a mutable reference to callwlock. Forrlockyou can use mutable or const; it'll just implicitly convert toconst.