habilitar el miembro de la clase según la plantilla

Ya sé que puedes habilitar (o no) el método de una clase usandostd::enable_if

por ejemplo:

template<size_t D, size_t E>
class Field
{
  ...

  size_t offset(const std::array<float,D>& p) const
  {
    ...
  }

  template<typename TT = size_t>
  typename std::enable_if<D!=E, TT>::type
  offset(const std::array<float,E>& p) const
  {
    return offset(_projection(p));
  }

  ...
};

Esto ayuda a no poder llamar a funciones que no son válidas en un caso específico, así como a eliminar los errores de sobrecarga ... ¡lo cual, para mí, es muy bueno!

Me gustaría ir más allá y hacer que algunos de los miembros de mi clase estén presentes solo si es necesario. De esa forma, obtendría un error si intento utilizar un objeto objetado que de otro modo no se hubiera iniciado

Intenté hacer

template<size_t D, size_t E>
class Field
{
  ...

  template<typename TT = projectionFunc>
  typename std::enable_if<D!=E, TT>::type _projection;
}

Pero el compilador me dice:

erreur: data member ‘_projection’ cannot be a member template

¿Hay alguna forma de lograr lo que quiero?