Re: Имитация typeof стандартными средствами C++
От: Masterkent  
Дата: 14.05.07 06:34
Оценка:
DG>Что хочется изменить, но я не вижу даже намека на решение:
DG>1. Убрать регистрацию типов
DG>2. Сделать автоматическую генерацию номера класса (я пытался это провернуть через адрес статической функции, но компилятор ругается, что этот адрес не является константой).

Средствами, допускаемыми текущим стандартом C++, сделать это невозможно. Объекту можно сопоставить только две вещи:

1) другой объект (возможно, другого типа) — за счёт применения к объекту функций или операторов;
2) интегральную константу — за счёт применения оператора sizeof.

Напрямую сопоставить произвольному объекту какой-либо тип нельзя. Из вышеперечисленного тип можно получить только на базе интегральной константы. Но закодировать тип уникальной константой, а затем ещё расшифровать, какой тип эта константа обозначает, можно только с использованием регистрации. Автоматизировать отображение типов в константы и обратно – констант в исходные типы – невозможно. Даже если бы удалось автоматизировать сопоставление типу константы посредством указателей на шаблонные функции (если бы из них можно было получать целые константы), обратное преобразование всё равно невыполнимо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.