code
. 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
T* next;
Должно быть так:
Node* next;
и дальше по накатанной.
Node* Head = new Node(0, nullptr);
0
- неправильно, должно бытьT{}
.50% ответа на этот вопрос кроется в самой ошибке. :) Но ты ведь не показываешь ее текст.
Хотя и без текста ошибки видно что у тебя просто типы в выражении
new Node(data, Head)
не совпадают.