template <typename T>
class C
{
public:
explicit T(T const & source)
: ptr(boost::addressof(p))
{}

T const & operator=(T const & source) {
this->ptr = boost::addressof(source);

return *this->ptr;
}

private:
T const * ptr;
};

int a;
C<int> ca(a);

a += 2;

とかやったら、C<T> に operator+= やらがないって怒られるわけだが、
これってどうにかして回避できない?

基本形は特殊化で対応すればいいけれど、T が operator+ を持ってた場合とかは
どう対応すればいいんでせう?