std::meta::is_defaulted

来自cppreference.com
< cpp | meta
在标头 <meta> 定义
consteval bool is_defaulted( std::meta::info r );
(C++26 起)

如果 r 表示预置函数,则返回 true,否则返回 false

参数

r - 一个反射值

返回值

如果 r 表示预置函数,则为 true,否则为 false

示例

#include <compare>
#include <meta>

struct Base {
    bool operator==(const Base&) const;
    std::strong_ordering operator<=>(const Base&) const = delete;
};

bool Base::operator==(const Base&) const = default;

struct Derived : public Base {
    std::strong_ordering operator<=>(const Derived&) const = default; // 隐式弃置
    // operator== 因为 operator<=> 的预置定义而被隐式预置
};

static_assert(std::meta::is_defaulted(^^Base::operator==));
static_assert(!std::meta::is_defaulted(^^Base::operator<=>));
static_assert(std::meta::is_defaulted(^^Derived::operator==));
static_assert(std::meta::is_defaulted(^^Derived::operator<=>));

参阅

检查反射是否表示函数
(函数) [编辑]
检查反射是否表示用户提供的函数
(函数) [编辑]