std::meta::is_assignment, std::meta::is_copy_assignment, std::meta::is_move_assignment
Определён в заголовочном файле <meta> | ||
|---|---|---|
consteval bool is_assignment( std::meta::info r ); | (1) | (начиная с C++26) |
consteval bool is_copy_assignment( std::meta::info r ); | (2) | (начиная с C++26) |
consteval bool is_move_assignment( std::meta::info r ); | (3) | (начиная с C++26) |
Возвращает true, если r представляет собой:
В противном случае возвращает false.
Параметры
| r | - | значение отражения |
Возвращаемое значение
true, если r представляет собой оператор присваивания; в противном случае — false
Пример
#include <iostream>
#include <meta>
template <typename C>
requires(std::meta::is_class_type(^^C))
constexpr void print_assignment_operators()
{
constexpr static auto class_name =
std::define_static_string(std::meta::display_string_of(^^C));
std::cout << "class " << class_name << '\n';
constexpr auto ctx = std::meta::access_context::unchecked();
constexpr static auto members =
std::define_static_array(std::meta::members_of(^^C, ctx));
template for (constexpr auto member : members)
{
if constexpr (std::meta::is_assignment(member))
{
std::cout << " " << std::meta::display_string_of(member) << " is ";
if constexpr (std::meta::is_copy_assignment(member))
std::cout << "copy ";
else if constexpr (std::meta::is_move_assignment(member))
std::cout << "move ";
std::cout << "assignment operator\n";
}
}
}
class C
{
C& operator=(const C&);
C& operator=(C&&) = default;
C& operator+=(int);
};
int main()
{
print_assignment_operators<C>();
}
Возможный вывод:
class C C& C::operator=(const C&) is copy assignment operator constexpr C& C::operator=(C&&) is move assignment operator
См. также
|
(C++26) | проверяет, представляет ли отражение специальную функцию-член (функция) |
|
(C++26) | проверяет, представляет ли отражение перегрузку оператора (функция) |
|
(C++26)(C++26)(C++26) | проверяет, имеет ли отражённый тип оператор присваивания для заданного аргумента (функция) |
|
(C++26)(C++26)(C++26) | проверяет, имеет ли отражённый тип оператор копирующего присваивания (функция) |
|
(C++26)(C++26)(C++26) | проверяет, имеет ли отражённый тип оператор перемещающего присваивания (функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/meta/is_assignment