T should be a POD type (see section 5.1.2). A conventional binary addition operator, +, must be defined for objects of type T, the assignment operator += must operate in a compatible way, and the symbol 0 must be convertible to type T, yielding a zero of the addition operation.
All standard arithmetic types of C++ satisfy these requirements for T.