Como usar sfinae para selecionar construtores?

Na meta-programação de template, pode-se usar o SFINAE notipo de retorno para escolher uma determinada função de membro de modelo, ou seja,

template<int N> struct A {
  int sum() const noexcept
  { return _sum<N-1>(); }
private:
  int _data[N];
  template<int I> typename std::enable_if< I,int>::type _sum() const noexcept
  { return _sum<I-1>() + _data[I]; }
  template<int I> typename std::enable_if<!I,int>::type _sum() const noexcept
  { return _data[I]; }
};

No entanto, isso não funciona em construtores. Suponha que eu queira declarar o construtor

template<int N> struct A {
   /* ... */
   template<int otherN>
   explicit(A<otherN> const&); // only sensible if otherN >= N
};

mas desaprová-lo porotherN < N.

Assim,SFINAE pode ser usado aqui? Estou interessado apenas em soluções que permitem a dedução automática de parâmetro de modelo, de modo que

A<4> a4{};
A<5> a5{};
A<6> a6{a4};  // doesn't compile
A<3> a3{a5};  // compiles and automatically finds the correct constructor

Nota: este é um exemplo muito simplificado onde SFINAE pode ser um exagero estatic_assert pode ser suficiente. No entanto, eu quero saber se euposso use SFINAE em vez disso.

questionAnswers(3)

yourAnswerToTheQuestion