https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68430
Bug ID: 68430 Summary: std::is_constructible<T>::value == true for unconstructable type T Product: gcc Version: 5.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: ytj000 at gmail dot com Target Milestone: --- // The following code compiles in gcc (http://goo.gl/gFGc9K), but not clang (http://goo.gl/woxdi1). #include <type_traits> template<class T> struct Foo { Foo(T = nullptr) {} }; using U = std::is_constructible<Foo<int>>; bool b = U::value; // If we remove this line, it compiles in both gcc and clang. // The value of `b` is true in gcc, which is counterintuitive since `Foo<int> a;` results compile-error. int main() {}