(у класса, который засовывается в queue, есть и constexpr конструктор и constexpr конструктор копирования)
Если более глобально то у меня есть шаблонный класс (который в шаблон принимает размер), с constexpr конструктором и мне нужно в компайлтайме, в этом конструкторе пройтись бфсом по определенным состояниям и заполнить массив определенными значениями. И вот для состояний, я хочу использовать std::queue
Можно использовать вектор, он constexpr с C++20 (сложность вставки и удаления не должны иметь значения). Другое дело, что сохранить результат в итоге придется только в array
Ого! А 20 плюсы уже только эти хороши :)))
фокус в том, что если ты знаешь на компиляции результат, то знаешь и его размер, точнее потенциально возможно его посчитать
Это конечно круто, но вот уже 2022 год, а только MSVC умеет поддержать std::vector в compile-time вычислениях https://godbolt.org/z/MYTbbsqvT
Предложение этой фичи не от MS ли был? :)
Если это был ответ "а почему компилятор должен уметь", то там дело совершенно не в том, знает он объем памяти или нет. Это как раз самый простой для решения вопрос. Проблемы переноса выделенной в constexpr памяти в рантайм иные
Вроде свободные каменщики предложили [p0784r7]
блин вообще мне это подходит, но компилятор у меня другой
Обсуждают сегодня