模板参数列表互连的通用结构

template argument list interconnected generic structs

我正在尝试编写一个小型单元库来熟悉泛型编程和隐式转换。我选择将单元组织成各自维度下的结构。为了在单位之间隐式转换,为兼容单位创建构造函数。在应用旨在允许任何数字类型占用 lengthValue 的模板之前,代码段很愉快。我现在收到以下错误,但我不知道如何解决它。

#include <type_traits>

class Distance
{
  template<typename GenericNumber, typename = typenamestd::enable_if<std::is_arithmetic<GenericNumber>::value, GenericNumber>::type> struct feet;
  template<typename GenericNumber, typename = typename std::enable_if<std::is_arithmetic<GenericNumber>::value, GenericNumber>::type> struct inches;

  template<typename GenericNumber, typename = typename std::enable_if<std::is_arithmetic<GenericNumber>::value, GenericNumber>::type>
  struct feet
  {
  public:
    feet(GenericNumber _distance);
    feet(feet& _distance);
    feet(inches _distance);

    inline GenericNumber getLength() { return lengthValue; }
  private:
    GenericNumber lengthValue = 0.0;
  };

  template<typename GenericNumber, typename = typename std::enable_if<std::is_arithmetic<GenericNumber>::value, GenericNumber>::type>
  struct inches
  {
  public:
    inches(GenericNumber _distance);
    inches(feet _distance);
    inches(inches& _distance);

    inline GenericNumber getLength() { return lengthValue; }
  private:
    GenericNumber lengthValue = 0.0;
  };
};

错误:

Error   C2955 use of class template requires template argument list 

行数

feet(inches _distance);
inches(feet _distance);
feet(inches<GenericNumber> _distance);
inches(feet<GenericNumber> _distance);

我需要指定我引用的模板类型作为参数,现在看来很明显