Результаты поиска по запросу "constexpr"

2 ответа

Захваченное значение может не быть constexpr, но его тип каким-то образом сохраняется.

я есть этоstatic_loop конструкция, используемая для диспетчеризации типов по циклу развертывания. template <std::size_t n, typename F> void static_loop(F&& f) { static_assert(n <= 8 && "static loop size should <= 8"); if constexpr (n >= ...

1 ответ

То есть аргумент принимается по ссылке на const, а не по значению. Как есть, вы пытаетесь скопировать кортеж non-constexpr в константном выражении - это не может работать. По ссылке это хорошо, так как вы на самом деле не читаете кортеж.

я естьstatic_loop построить как это template <std::size_t n, typename F> void static_loop(F&& f) { static_assert(n <= 8 && "static loop size should <= 8"); if constexpr (n >= 8) f(std::integral_constant<size_t, n - 8>()); if constexpr (n >= ...

1 ответ

Обратите внимание, что компиляция объявления clang сама по себе не является ошибкой компилятора. Это класс ситуаций, которые плохо сформированы, диагностика не требуется.

ел бы использовать функцию и передатьconstexpr lambda, Тем не менее, он успешно компилируется, только если я позволю типу выводиться черезauto, Явно давая тип через-> std::array<event, l()> похоже на провал (первый случай). Почему это? template ...

ТОП публикаций

4 ответа

 это явно не чистая функция.

ли я, что: Любая функция, определенная сconstexpr эточистая функция [http://en.wikipedia.org/wiki/Pure_function], а такжеЛюбая чистая функция может быть и должна быть определена сconstexpr если это не очень дорого для компилятора.И если да, то ...

2 ответа

 применяется только к собственным типам операндов.

сто заметил, что новый стандарт определяетmin(a,b) а такжеmax(a,b) без constexpr. Примеры из 25.4.7, [alg.min.max]: template<class T> const T& min(const T& a, const T& b); template<class T> T min(initializer_list<T> t);Разве это не жаль? Я ...

1 ответ

Что происходит, когда возникает исключение при вычислении constexpr?

При вычислении константных выражений для инициализацииconstexpr можно бросать исключения. Например, вот пример, где вычисление константного выражения защищено от переполнения: #include <iostream> #include <stdexcept> constexpr int g(int n, int ...

7 ответов

Создать N-элементный массив constexpr в C ++ 11

Здравствуйте, я изучаю C ++ 11, мне интересно, как сделать массив constexpr от 0 до n, например: n = 5; int array[] = {0 ... n};так что массив может быть{0, 1, 2, 3, 4, 5}

2 ответа

Есть ли случаи, когда constexpr следует избегать, даже если он может быть использован?

Если объект объявленconstего значение гарантированно будет доступно только во время выполнения, но если оно объявленоconstexprэто значение гарантированно будет доступно как во время компиляции, так и во время выполнения. Так что, если у меня есть ...

1 ответ

Можно ли создавать экземпляры шаблонов с помощью цикла for в функции constexpr в C ++ 14?

Я возился со сборкой SVN Clang, чтобы поэкспериментировать с расслабленными правилами дляconstexpr, Одна из вещей, которые я до сих пор не смог определить, это возможность циклически просматривать элементы внутри кортежа во время компиляции в ...

4 ответа

Я упоминал об этом, и это представляет интересную и хитрую проблему оптимизации. В этих случаях используются два совершенно разных пути кода, поскольку один ДОЛЖЕН быть оценен во время компиляции, а другой - нет.

ользую gcc 4.6.1 и получаю интересное поведение, связанное с вызовомconstexpr функция. Эта программа работает очень хорошо и сразу распечатывает12200160415121876738. #include <iostream> extern const unsigned long joe; constexpr unsigned ...