, OCD, .
, :
, . , ( , , ).
-, , . , / . , , , . , , . ? - , ? - setXXX, , . , .
-, git . , .
, , Source Insight . .
, , , Microsoft, .
- ( ). , : , =. - :
class C {
public:
magic_int value;
⋮
};
C magic , ++ " ", Java.
C::C (whatever-it-did-before)
: existing-stuff,
value(this,&C::setter)
, . , - :
int magic_int::operator= (int x)
{
(owner->*setfunc)(x);
}
, magic_int setfunc, . CRTP , :
template<typename OwnerT, typename ValueT>
class magic {
friend class OwnerT;
ValueT value;
OwnerT* owner;
void (OwnerT::setfunc(const ValueT&));
⋮
};
, - C, setter, , , , . , , .
, , , setfunc . ( ), = .
.