An instance of TensorBase can either represent an actual tensor or a tensor _expression_. In the first case, you can access the coefficient, but in the second case you can't since expressions must first be evaluated. That makes using TensorBase a little tricky and dangerous, which is why it's private.
To write generic code you can instead wrap your tensor or tensor _expression_ inside a TensorRef. A TensorRef will evaluate the _expression_ it encapsulates if needed to allow you to safely read or update the underlying coefficients. For example, you could write:
Tensor<float, 1> T1(10);
TensorRef<Tensor<float, 1> > ref1(T1);
TensorRef<Tensor<float, 1> > ref2(T1.slice(foo, bar));
TensorRef<Tensor<float, 1> > ref3(T1 + T2);
ref1 and ref2 will both allow you to update the coefficient of T1, ref3 will be read only.
There are a few more examples in the tests unsupported/test/cxx11_tensor_ref.cpp