Пример: < /p>
Код: Выделить всё
class TA
{
public:
operator bool() const noexcept
{
return {};
}
};
class TB
{
public:
explicit operator bool() const noexcept
{
return {};
}
};
void test_predicate()
{
static_assert(std::predicate); //Ok
static_assert(std::predicate); //Failed
}
std :: Predicate Ограничения кажутся избыточными, и это имеет последствия на практике.
Например, чтобы определить, сколько элементов std :: vector иметь значение, вы можете просто написать:
Код: Выделить всё
std::count_if(A.begin(), A.end(), std::identity{});< /code> < /p>
Но вы не можете написать то же самое, используя ограниченные
алгоритмы:
std::ranges::count_if(A, std::identity{}); \\compile errorПодробнее здесь: https://stackoverflow.com/questions/794 ... on-to-bool
Мобильная версия