Por que a afirmação is_constructible é construtível quando não é?

O programa a seguir, quando compilado com o GCC 4.7 e o clang 3.2, produz "1" como saída.

#include <type_traits>

struct foo {
    template<typename T>
    foo(T) {
        static_assert(not std::is_same<int, T>(), "no ints please");
    }
};

#include <iostream>    
int main() {
    std::cout << std::is_constructible<foo, int>();
}

Isso é confuso.foo é claramente não construtível a partir deint! Se eu mudarmain para o seguinte, ambos os compiladores rejeitam devido a falha de declaração estática:

int main() {
    foo(0);
}

Como é que ambos os compiladores dizem que é construtível?

questionAnswers(2)

yourAnswerToTheQuestion