template <class Parent>
struct A_: public Parent {
template <class T>
A_(const T & t_): Parent(t_)
{
t_.set(this->a, A_<Unique_>());
}
template <class T>
A_ & operator=(const T & t_)
{
Parent::operator=(t_);
t_.set(this->a, A_<Unique_>());
return *this;
}
template <class T>
void set(double & t_, T t) const {
Parent::set(t_, t);
}
void set(double & a, A_<Unique_>) const
{
a = this->a;
}
A_() {}
double a;
};
End of Listing