Если в классе есть деструктор, объявленный с необходимым пунктом, который оценивается в False, почему класс не тривиальнC++

Программы на C++. Форум разработчиков
Anonymous
Если в классе есть деструктор, объявленный с необходимым пунктом, который оценивается в False, почему класс не тривиальн

Сообщение Anonymous »

Я играю с c ++ 20 концепциями
https://godbolt.org/z/931xaey45

Код: Выделить всё

#include 

template
class Optional
{
public:
~Optional() requires (!std::is_trivially_destructible_v);

};

#include 
int main()
{
const char* bool_value[] = {"false", "true"};

bool is_trivial = std::is_trivial_v;
bool is_trivial_destructable = std::is_trivially_destructible_v;

std::printf("std::is_trivial_v = %s\n", bool_value[is_trivial]);
std::printf("std::is_trivial_destructable = %s\n", bool_value[is_trivial_destructable]);
}
< /code>
output: < /p>
std::is_trivial_v = false
std::is_trivial_destructable = false
Но, я ожидал, что деструктор не будет создан экземпляр, потому что для этой ситуации требуется (false) генерируется для параметра шаблона int .
Q: Почему ~ Необязательный () требует (false) .>

Подробнее здесь: https://stackoverflow.com/questions/672 ... ates-to-fa

Вернуться в «C++»