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, "" );
}

Reply via email to