scl-utility

Утилиты для получения имени символа

Извлечение имён функций, методов и членов данных класса на этапе компиляции.

Содержание:


symbol_name<S>

Возвращает квалифицированное строковое имя символа (глобальная функция, метод класса или член данных).

Утилита предоставляет единый способ извлечения идентификаторов для различных сущностей C++, переданных как нетиповые параметры шаблона.

Семантика

Примеры

#include <scl/utility/meta/symbol.h>

namespace sys {
    void initialize() {}
    struct Clock {
        int ticks;
        void reset() {}
    };
}

// Глобальная функция / функция в пространстве имён
static_assert(scl::symbol_name<sys::initialize>() == "sys::initialize");

// Функция-член
static_assert(scl::symbol_name<&sys::Clock::reset>() == "sys::Clock::reset");

// Член данных (свойство)
static_assert(scl::symbol_name<&sys::Clock::ticks>() == "sys::Clock::ticks");

Типичные сценарии использования

Реализация фреймворков сериализации, автоматическое отображение аргументов командной строки или отладчики, где строковое имя поля класса или функции требуется на этапе компиляции.


symbol_short_name<S>

Возвращает только терминальный идентификатор символа S.

Пример

#include <scl/utility/meta/symbol.h>

struct Processor {
    void execute() {}
};

int main() {
    // Возвращает "execute" вместо "Processor::execute"
    constexpr auto name = scl::symbol_short_name<&Processor::execute>();
}