Dependency injection
. DEF_TYPENAME(float)
будет такой код:template<>
struct NameOf<float> {
static const char value[];
};
const char NameOf<type>::value[] = "float";
NameOf
всегда представляет из себя тип. У этого типа всегда будет статическая константа - строка с инициализацией от строкового литерала с именем типа из макроса.static constexpr const char* value = "float";
прямо внутри определения типа NameOf
. Это будет тривиальный статик, которому не требуется размещение, в котором лишь на время компиляции будет храниться указатель на уже размещенный строковой литерал. DEF_TYPE
- судя по стилю это макрос препроцессора. Во что этот макрос раскрывается - известно только тебе, т.к. только у тебя есть все изучаемые тобой тексты. мы не можем победить DLL hell
ведь в моем понимании компилятор все файлы просматривает на наличие неизвестных объектов