//! Base class for TResult classes that can exhibit high performance (they require no heap allocation and no lock)
//! \warning
//! - it is more difficult to implement TResult correctly, especially with internal state (need to understand move semantics)
//! - it is more difficult to correctly implement a TResult derived from QMovedResult, especially with internal state (need to understand move semantics)
//! - TResult scoped copies do not share state (such as the whole path to the current value)
It just seemed better to tell the user "it is impossible" (to bind a Reader with a const float) rather than "i don't know how to do that"
BTW, the QBind signature probably needs to be changed to support T&& in addition to const T& + the hidden parameter used to distinguish Read/Write of QBind<_,T&> (not const T&) should be changed to work with C++ and msvc, so...
If it's possible to generically static_assert that all QBind<TResult,const T&> and QBind<TResult,T&&> are impossible when TResult::Mode==Read, let's do it !
It just seemed better to tell the user "it is impossible" (to bind a Reader with a const float) rather than "i don't know how to do that"
BTW, the QBind signature probably needs to be changed to support T&& in addition to const T& + the hidden parameter used to distinguish Read/Write of QBind<_,T&> (not const T&) should be changed to work with C++ and msvc, so...
If it's possible to generically static_assert that all QBind<TResult,const T&> and QBind<TResult,T&&> are impossible when TResult::Mode==Read, let's do it !
CborWriter(constCborWriter&o):QMovedResult(),io(o.io),levels(0){}// It is important that scoped copies start again from level 0
CborWriter(constCborWriter&o):QMovedResult(),io(o.io),levels(0){}// It is important that scoped copies start again from level 0 to avoid duplicate _out() calls