C++ Идеальная статическая иерархия или как объединить объекты в структуру
1717 показов
7K7K открытий

Если мне не изменяет память (а она может, с С++ работал давно), то вот тут есть проблемка:
struct NodeName

{

//Вот это будет создавать временные объект, копировать значение и удалять, т.к. для string желаемая автором логика не будет работать, и надо что-то вроде std::forward
NodeName(const std::string& name);

//А еще у меня есть подозрения, что на самом деле вызывается вот этот конструктор обычно, а не тот, что выше, из-за логики по умолчанию при приведении типов
NodeName(const char* name);

Но могу ошибаться :D

Ответить

std::forward нужен для передачи универсальных ссылок. std::string вполне комфортно копируется и передаются по константным ссылкам. Ибо существовал задолго до появления std::forward(C++11)
C макросом, который я использую для инициализации, только этот конструктор(const char* name) и будет вызываться. std::string оставлен для консистентности, ибо я храню с помощью std::string

Ответить