template<class DS, class T = typename DS::value_type>
class SymmetricMatrix
{
};
SymmetricMatrix<std::deque<double>> c;
Assumes that DS (data structure) contains typedef value_type, or it won't compile. You can replace value_type with whatever you want, so long as it's in DS.