Habilitar iterador como un parámetro de plantilla por defecto?

Tengo un constructor así:

class MyClass
{
    template<class TI> MyClass(TI first, TI last);
};

template<class TI> MyClass::MyClass(TI first, TI last)
{
    ;
}

Me gustaría habilitar este constructor solo si TI es un iterador (eso significa que TI tiene una categoría iterador, creo). ¿Cómo hacer eso en C ++ 2011 utilizando un enable_if como un parámetro de plantilla predeterminado (en la declaración y en la definición)?

Muchas gracias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta