Проверка концептов внутри типа
От: K13 http://akvis.com
Дата: 10.12.24 09:16
Оценка:
#include <concepts>

template< typename T >
concept cloneable = requires( T x )
{
    { x.clone() } -> std::convertible_to<T*>;
};

template< cloneable T >
struct OnlyCloneable {};

struct Foo
{
    Foo* clone() const { return new Foo(*this); }
    //using Ptr1 = OnlyCloneable<Foo>; // если раскомментарить, то ошибка компиляции
};

using Ptr2 = OnlyCloneable<Foo>;

static_assert( cloneable<Foo> );

int main()
{
    return 0;
}

Вопрос -- это как-то лечится?
Почему проваливается проверка концепта внутри типа, хотя наличие метода clone компилятору уже известно?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.