In your Sampler class, you have:
typedef typename Distrib<AtomType>::Matrix Matrix;
Here AtomType is double , so this is
typedef typename Distrib<double>::Matrix Matrix;
And then in your class Distrib
typedef typename SOLT::AtomType AtomType;
expands to
typedef typename double::AtomType AtomType;
Hence the error message. I think you want the string in the Sampler class to be:
typedef typename DT::Matrix Matrix;
Tonyk source share