Я сделал wandbox, который фиксирует мою проблему: https://wandbox.org/permlink/qAX6SL43BvERo32Z
По сути, как подсказывает Титл.Я использую CRTP, и мой конструктор базового / родительского класса вызывает дочерний метод стандартным способом в CTRP.
НО этот дочерний метод использует собственные атрибуты дочерних классов, которые, если они имеют определенный тип, такие как std :: string, могут вызывать проблемы во время выполнения (такие как неправильное размещение в MSVC и 'what ():basic_string :: _ M_create '/ пустая строка в GCC).
Короче говоря, это UB?Если так, то почему?
Бонусные баллы для тех, кто может дать советы по решению этой проблемы.Должен ли я добавить виртуальный метод CTRP "Init", который родительский класс вызывает для инициализации дочерних переменных?Стоит ли вообще избегать вызова CTRP дочерних методов в конструкторе?