это понятно: в моей версии libstdc++ операции с вектором не constexpr, а в libc++ operator!= у итератора не constexpr.
Вопрос — почему, если сделать функцию шаблонной по типу того, что лежит в векторе всё начинает работать?
https://pastebin.com/J7s4BYFu
у вектора нет constexpr конструктора
Я мало понимаю в constexpr, но вроде бы это -- рекомендация компилятору, что это можно вычислить ещё на этапе компиляции. Но только рекомендация. Компилятор её может не выполнять. В одном месте он может это предвычислить, в другом -- не может, или нет смысла. Итого -- это всё зависит от того, как ты это всё используешь. А как ты это используешь -- ты не показываешь. К чему же тогда вопрос, что оно в одном месте работает а в другом -- нет?
Обсуждают сегодня