std::meta::display_string_of, std::meta::u8display_string_of
Определено в заголовочном файле <meta> | ||
|---|---|---|
consteval std::string_view display_string_of( std::meta::info r ); | (1) | (начиная с C++26) |
consteval std::u8string_view u8display_string_of( std::meta::info r ); | (2) | (начиная с C++26) |
Возвращает строку, определяемую реализацией. Реализациям рекомендуется создавать текст, помогающий определить, что представляет собой r.
Параметры
| r | - | значение отражения |
Возвращаемое значение
Строка, определяемая реализацией. По возможности строка должна подходить для идентификации представленной конструкции.
Примечания
Результат V завершается нулевым символом: гарантируется, что V.data()[V.size()] является '\0'. Каждый элемент в V — потенциально неуникальный объект со статической длительностью хранения, который можно использовать в константных выражениях; указатель на такой элемент не подходит для использования в качестве аргумента шаблона для нетипового параметра шаблона типа указателя.
Пример
#include <iostream>
#include <meta>
#include <vector>
struct S { int m; };
enum class E { e };
void foo() noexcept;
int main()
{
constexpr static auto names =
{
std::define_static_string(display_string_of(^^S)),
std::define_static_string(display_string_of(^^S::m)),
std::define_static_string(display_string_of(^^E)),
std::define_static_string(display_string_of(^^E::e)),
std::define_static_string(display_string_of(^^foo)),
std::define_static_string(display_string_of(^^std)),
std::define_static_string(display_string_of(^^std::vector<int>))
};
for (const auto& name : names)
std::cout << name << '\n';
}
Возможный вывод:
S S::m E E::e void foo() std std::vector<int>
См. также
|
(C++26)(C++26) | если отражаемая сущность имеет идентификатор, получает его имя (функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/meta/display_string_of