Hi John, John Dlugosz wrote:
I'm using the Microsoft 2008 compiler.
The template
template <typename T, typename D> struct is_proper_TD_types : std::tr1::integral_constant<bool,
is_Universal_time_API<T>::value &&
(std::tr1::is_same<typename T::duration_t,D>::value ||
std::tr1::is_same<duration,D>::value ||
std::tr1::is_same<linear_duration,D>::value ||
is_dimensional_time<D>::value) {};
gives an error "'T': must be a class or namespace when followed by '::'" when T is int.
Move the integral constant type you are deriving from to the template parameter list for SFINAE to apply. In this case that'll be: template <typename T, typename D, typename Enable = std::tr1::integral_constant<bool, is_Universal_time_API<T>::value && (std::tr1::is_same<typename T::duration_t,D>::value || std::tr1::is_same<duration,D>::value || std::tr1::is_same<linear_duration,D>::value || is_dimensional_time<D>::value) > > struct is_proper_TD_types : Enable {}; Please let me know if this works for you. HTH, Gevorg P.S. BTW, has my suggestion in the thread "Choosing a variable size" worked for you?