станд :: is_constructible на неполном типа

Обновить

April 2019

Просмотры

17 раз

3

У меня есть следующий код:

#include <iostream>

class A;

int main()
{
    std::cout << std::is_constructible<A>::value << std::endl;
}

Когда я использую GCC 8.3 (см здесь для живого примера), этот код компилируется. Однако, когда я использую Clang 8.0 (см здесь для живого примера), я получаю ошибку компиляции , что неполные типы не могут быть использованы в чертах типа. Который правильный? Могу ли я использовать is_constructibleна неполном типа (с ожидаемым значением false), или я не разрешается?

1 ответы

0

Cppreference states:

template< class T, class... Args > struct is_constructible;

T and all types in the parameter pack Args shall each be a complete type, (possibly cv-qualified) void, or an array of unknown bound. Otherwise, the behavior is undefined.