  Numerical tensor calculus comprise basic tensor operations such as the
entrywise addition and contraction of higher-order tensors. We present, TLib,
flexible tensor framework with generic tensor functions and tensor classes that
assists users to implement generic and flexible tensor algorithms in C++. The
number of dimensions, the extents of the dimensions of the tensors and the
contraction modes of the tensor operations can be runtime variable. Our
framework provides tensor classes that simplify the management of
multidimensional data and utilization of tensor operations using
object-oriented and generic programming techniques. Additional stream classes
help the user to verify and compare of numerical results with MATLAB. Tensor
operations are implemented with generic tensor functions and in terms of
multidimensional iterator types only, decoupling data storage representation
and computation. The user can combine tensor functions with different tensor
types and extend the framework without further modification of the classes or
functions. We discuss the design and implementation of the framework and
demonstrate its usage with examples that have been discussed in the literature.
