Описание тега constexpr-function
1
ответ
Что в точности означает [decl.constexpr].5?
Стандарт функций constexpr утверждает в пункте 5 [decl.constexpr]: Для нешаблонной, нестандартной функции constexpr или нешаблонного, нестандартного, ненаследующего конструктора constexpr, если не существует значений аргументов, так что вызов функци…
11 июн '20 в 18:17
0
ответов
Всегда ли операции со строковым литералом должны быть constexpr?
Посмотрите этот код на Godbolt. Он содержит простую функцию, которая преобразует строку в целое число, игнорируя все нецифровые символы. Он также поддерживает анализ отрицательных целых чисел, если целочисленный тип подписан. Поскольку функция const…
03 июл '20 в 15:45
1
ответ
Конструктор constexpr не вызывается как constexpr для неявного преобразования типа
Я сделал код, который может быть отправлен в функцию на основе сайта вызова, предоставляющего строку, связанную с данной функцией (через tupleуказателей на функции и параллельного массива). Вместо того, чтобы принимать строку напрямую, функция диспе…
25 авг '20 в 07:05
1
ответ
constexpr проверка строкового литерала: короткий синтаксис, нет возможности выполнения
РЕДАКТИРОВАТЬ: переименовано, поскольку мое окончательное решение не использует метод отравления. Я ищу способ предотвратить вызов метода constexpr во время выполнения. Я пишу функцию, которая принимает строковый литерал, поэтому я не могу просто ис…
22 авг '20 в 01:37
1
ответ
Тип параметра конструктора constexpr 'std::function' не является буквальным типом
Я пишу простую структуру HTTP-сервера C++. В моем Server класс, я могу добавить Routeс. Каждый маршрут состоит из пути, метода HTTP и Controller (который представляет собой конвейер функций, вызываемых при выполнении запроса). Controller класс созда…
06 сен '20 в 23:21
1
ответ
c++ как использовать значение constexpr с оператором []
Проблема происхождения в том, что я хочу использовать const char* или же char []в шаблонных аргументах, не относящихся к типу. Конечно, сейчас это не поддерживается. Итак, я хочу написать код для преобразования char[] к std::integer_sequence. Но я о…
19 мар '21 в 14:33
1
ответ
Что мешает вычислению этой функции constexpr во время компиляции?
Я работаю над классом для представления набора аппаратных выводов микроконтроллера (STM32). Выбранные контакты могут быть прерывистыми на порте, но предполагается, что они заказаны. Например, если этот объект создан для представления контактов PA2, …
21 июн '21 в 11:46
3
ответа
Почему метод constexpr может правильно возвращать члены класса, значение которых изменяется во время выполнения?
Я только что обнаружил, что метод может правильно возвращать значение члена класса, которое изменяется во время выполнения . У меня вопрос, как это возможно, если constexpr методы должны быть полностью оценены во время компиляции? Пример ниже правил…
28 июл '21 в 10:51
1
ответ
статическая компиляция экземпляра из данных json в ржавчине
Я хочу создать статический экземпляр во время компиляции (не во время выполнения) из данных JSON, загруженных из файла (аналогично constexpr): Пример: // a file in the project /path/to/project/data.json { "field1" : "a" } // project code: use serde_…
01 авг '21 в 13:31
1
ответ
Объединение строковых литералов во время компиляции
Мне нужно объединить переменное количество строковых литералов в один, чтобы использовать его в static_assert() Я пробовал использовать шаблоны со структурами, но компилятору не нравятся литералы в качестве параметров шаблона. error: the address of …
24 сен '21 в 21:54
1
ответ
Почему функция constexpr, возвращающая std::string, не компилируется вне шаблонного класса?
Примечание: я использую gcc, но протестирован на godbolt.org, и он также работает на msvc, но не на clang. Я случайно обнаружил, что следующая простая функция компилируется в шаблонном классе, но не как бесплатная функция. Может кто-нибудь объяснить…
15 окт '21 в 00:20
1
ответ
В чем преимущество виртуальных функций constexpr в C ++ 20?
Я легко могу сказать, что, объявляя функцию как, мы оцениваем ее во время компиляции, и это экономит время во время выполнения, поскольку результат уже был получен. С другой стороны, виртуальные функции должны быть разрешены во время выполнения. Сле…
21 дек '21 в 16:49
1
ответ
Требование к типу литерала в функциях constexpr
Вот мой код: class agg_t1{ int x; // private non-static data menber }; class agg_t2{ agg_t2(){} // user-provided constructor }; constexpr void ce1(agg_t1 arg){}; // OK constexpr void ce2(agg_t2 arg){}; // ERROR: parameter type 'agg_t2' is not a lite…
28 дек '21 в 07:52
1
ответ
Функция constexpr не должна быть объявлена встроенной.
Анализируя код с помощью SonarLint, я получил сообщение (название вопроса) о деструкторе , который объявлен, как показано ниже: class Foo { public: . // default ctor . // parameterized ctor . inline ~Foo() = default; // dtor . . // copy ctor = delet…
07 янв '22 в 16:03
0
ответов
Функция constexpr работает только в том случае, если она объявлена как кажущийся нерелевантным шаблон.
Следующий код не компилируется; г++ 7.3.0 с --std=c++17выдает сообщение об ошибке недопустимый возвращаемый тип 'const C' функции constexpr 'constexpr const C operator+(const C&, int)'примечание: 'C' не является литералом, поскольку 'C' имеет не…
08 дек '20 в 16:29
3
ответа
Компилятор не может выполнить выражение constexpr
У меня есть примерно такой код: template<typename ... Args> constexpr size_t get_init_size(Args ... args) { return sizeof...(Args); } template<typename ... Args> constexpr auto make_generic_header(Args ... args) { constexpr size_t header…
18 ноя '21 в 10:48
2
ответа
функция constexpr, которая используется в нескольких модулях
Я заметил странное поведение, когда работал с функцией constexpr. Я сократил код до упрощенного примера. Две функции вызываются из двух разных единиц трансляции (модуль A и B). #include <iostream> int mod_a(); int mod_b(); int main() { std::co…
01 мар '22 в 11:12
2
ответа
Как я могу инициализировать массив constexpr со значениями, используя std::generate
Например, если бы я хотел constexpr std::array<int,100>инициализирован со всеми кратными 3 от 1 до 300 во время компиляции, как я могу это сделать? Моей первой мыслью было использовать std::generate, что-то вроде: constexpr std::array<int,1…
10 мар '21 в 21:06
1
ответ
Константы constexpr внутри функции constexpr?
Предположим, у меня есть статическая функция, которая принимает перечисление и возвращает указатель cstring для отладки. Функция может быть constexpr, но не гарантируется, что ее всегда можно будет вычислить во время компиляции. Скажем, он работает …
15 янв '21 в 11:20
1
ответ
Реализация обертки типизированного кортежа
Как может выглядеть реализация, которая охватывает, например, std::tupleкак статический список типа/значения плюс тип (не содержащийся в кортеже) для ссылки на какого-либо владельца/посетителя. Я хочу создать экземпляр как constexpr auto data = data…
12 апр '22 в 10:30