не будет плохо

тировать: выделение актуального вопроса с большим количеством контекста, если необходимо.

Я хочу реализовать следующий метод:

template <typename T>
<unspecified> type_identification();

Для универсального типа T он должен возвращать (относительно) уникальную идентификацию, которая является стабильной в течение нескольких вызовов одной и той же программы и может использоваться для межпроцессного взаимодействия (поэтому нет решений на основе указателей).

Могут быть использованы специфичные для компилятора макросы / расширения / встроенные функции, предпочтительно доступные как для MSVC, так и для Clang.

Я рассмотрелstd::type_info::hash_code, или жеstd::type_info::name&nbsp;но оба из них не могут гарантировать один и тот же вывод при нескольких вызовах одной и той же программы.

Пытаясь избежатьXY-проблема&nbsp;немедленно объясняя проблему, которую я пытаюсь решить.

Я написал код для общего хранения данных в файле для последующего использования. Каждой так называемой записи в файле присваивается метка кодом приложения, которую она должна использовать для доступа к той же записи в последующем вызове программы. API в основном сводится к:

template <typename T>
void make(const std::string &name, T value);

template <typename T>
T get(const std::string &name);

Обратите внимание, что это просто пример кода.

Когда код приложения обращается к значению черезget<T>, он явно указывает тип записи, так что реализация может использоватьreinterpret_cast&nbsp;предоставить доступ к записи как фактический тип, а не какvoid *.

Предположим ради этого вопроса, что все опасности и подводные камни в отношенииreinterpret_cast&nbsp;и постоянные данные в файл были приняты во внимание.

Чтобы избежать неприятных сбоев, потому что код приложения испортил аргумент шаблона, я хотел бы добавить некоторую идентификацию типа для каждой записи в файле. В основном, когда код приложения делает что-то вроде:

make("integer", 5);
auto a = get<std::string>("integer");

Я хотел бы выдать исключение, указывающее на несоответствие фактического типа и запрашиваемого типа.