http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48526
Summary: [C++0x] std::is_constructible<void, Args...>::value shall be false Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: gintensub...@gmail.com According to N3242 20.9.4.3 clause 6, the expression std::is_constructible< void, Args... >::value shall be false for any type pack 'Args', because a variable definition void t( create<Args>... ); is ill-formed, given the following function prototype: template <class T> typename std::add_rvalue_reference<T>::type create(); But gcc-4.6.0 rejects all following static_assert: --------------------- #include <type_traits> int main() { static_assert( !std::is_constructible<void>::value, "" ); static_assert( !std::is_constructible<void, int>::value, "" ); static_assert( !std::is_constructible<void, int, double>::value, "" ); }