Лучшие constexpr вопросы ИТ разработчиков

  • 4 голосов
  • 3 ответа
  • 0 просмотров
3 ответа

 дает мне длину массива.

мой код имеет этоconstexpr строка constexpr char my_str[] = "hello";типmy_str содержит информацию о его размере, т.е.sizeof(my_str) является константой 6 и может использоваться везде, где требуется константа. Что оstrlen(my_str)? Может / должно ...

Задан 07 Sep 2017, 16:38 от anatolyg
  • 34 голосов
  • 2 ответа
  • 0 просмотров
2 ответа

Обнаружение constexpr с SFINAE

Я работаю над обновлением некоторого кода C ++, чтобы использовать преимущества новой функциональности в C ++ 11. У меня есть класс черт с несколькими функциями, возвращающими фундаментальные типы, которые большую часть времени, но не всегда, ...

Задан 05 Mar 2013, 19:47 от K-ballo
  • 37 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

Почему MSVC ++ 11 отклоняет квалификацию constexpr для функции?

Итак, поиграв с constexpr, MSVC (Visual Studio 2012) выдал ошибку при попытке квалифицировать мою функцию с помощьюconstexpr Ключевое слово, использующее эту простую программу (включая опущено): constexpr int factorial(int n) { return n <= 1 ? 1 ...

Задан 29 Aug 2013, 14:24 от JBL
  • 4 голосов
  • 3 ответа
  • 0 просмотров
3 ответа

возможно ли использование вспомогательного выражения для принудительной оценки функции constexpr во время компиляции?

@cyberpunk_ [https://stackoverflow.com/users/1392142]пытается достичь чего-то и задал несколько вопросов, но все погоня сводится к следующему: Можно ли создать инструмент для обеспечения оценки времени компиляцииconstexpr функционировать? int ...

Задан 13 Jan 2013, 23:01 от pepper_chico
  • 6 голосов
  • 2 ответа
  • 0 просмотров
2 ответа

Ошибка использования constexpr в качестве параметра шаблона в том же классе

Если я пытаюсь скомпилировать следующий код C ++ 0x, я получаю сообщение об ошибке: template<int n> struct foo { }; struct bar { static constexpr int number() { return 256; } void function(foo<number()> &); };С gcc 4.6.1 сообщение об ...

Задан 12 Nov 2011, 23:20 от CesarB
  • 19 голосов
  • 2 ответа
  • 0 просмотров
2 ответа

Лямбда-захват объекта constexpr

GCC 4.7.2 компилирует это: constexpr int i = 5; []{ std::integral_constant< int, i >(); }; // nonstandard: i not capturedно не это constexpr int i = 5; [&i]{ std::integral_constant< int, i >(); }; // GCC says i not constexprПоследний пример мне ...

Задан 20 Nov 2012, 08:13 от Potatoswatter
  • 4 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

Понимание примера преобразования lvalue в rvalue

Мне трудно понять, как этот код (пример из проекта стандарта C ++ 14[Conv.lval]) вызывает неопределенное поведение для

Задан 13 Feb 2015, 18:34 от template boy
  • 42 голосов
  • 7 ответов
  • 0 просмотров
7 ответов

перегрузка constexpr

Связанный:Функция, возвращающая constexpr, не компилируется [https://stackoverflow.com/questions/7779013/probrem-with-constexpr-how-to-resolve-it] Мне кажется, что constexpr ограничен в полезности в C ++ 11 из-за невозможности определить две ...

Задан 20 Jan 2012, 03:54 от David Stone
  • 17 голосов
  • 6 ответов
  • 0 просмотров
6 ответов

Является ли получение адреса локальной переменной константным выражением в C ++ 11?

Следующая программа на C ++ 11: int x = 42; void f() { int y = 43; static_assert(&x < &y, "foo"); } int main() { f(); }Не компилируется с gcc 4.7, так как жалуется: error: ‘&y’ is not a constant expressionЭто согласуется с моей интуицией. ...

Задан 21 Aug 2013, 08:24 от Andrew Tomazos
  • 1 голос
  • 1 ответ
  • 0 просмотров
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 >= ...

Задан 30 Dec 2018, 13:41 от Amos
  • 8 голосов
  • 4 ответа
  • 0 просмотров
4 ответа

инициализация массива constexpr для сортировки содержимого

Это скорее загадка, чем проблема реального мира, но я попал в ситуацию, когда хочу написать что-то, что ведет себя точно так же, как template<int N> struct SortMyElements { int data[N]; template<typename... TT> SortMyElements(TT... tt) : data{ ...

Задан 24 Oct 2013, 07:39 от Quuxplusone
  • 7 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

Почему сравнение двух параметров функции constexpr не является постоянным условием для статического утверждения?

constexpr uint32_t BitPositionToMask(int i,int Size){ static_assert(i < Size,"bit position out of range"); return 1 << i; }это генерирует: error: non-constant condition for static assertionна GCC 4.6.2 Я что-то не получаю или это ошибка ...

Задан 10 Jul 2013, 18:02 от odinthenerd
  • 3 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

почему массив const недоступен из функции constexpr?

у меня есть функция constexpr с именем access, и я хочу получить доступ к одному элементу из массива: char const*const foo="foo"; char const*const bar[10]={"bar"}; constexpr int access(char const* c) { return (foo == c); } // this is working ...

Задан 18 Sep 2013, 17:17 от user1810087
  • 0 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

Очень приятно слышать, что мы больше не нуждаемся в повторном объявлении! Я проверил с gcc 7.1.0 / C ++ 17 и да, я просто могу удалить определение. Поэтому я переключу все свои проекты на c ++ 17 :-) Язык движется в правильном направлении!

я хочу использовать некоторые удобные вещи, такие как

Задан 23 Jun 2017, 12:41 от Klaus
  • 8 голосов
  • 4 ответа
  • 0 просмотров
4 ответа

инициализация массива constexpr для сортировки содержимого

Это скорее загадка, чем проблема реального мира, но яЯ попал в ситуацию, когда я хочу написать что-то, что ведет себя как

Задан 24 Oct 2013, 05:39 от Quuxplusone
  • 28 голосов
  • 5 ответов
  • 0 просмотров
5 ответов

Возможно ли is_constexpr в C ++ 11?

Можно ли создать логическое значение времени компиляции на основе того, является ли выражение C ++ 11 постоянным выражением (т.е.constexpr) в C ++ 11? Несколько вопросов по SO относятся к этому, но я нигде не вижу прямого ответа.

Задан 08 Nov 2012, 22:58 от user2023370
  • 14 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

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

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

Задан 01 Jan 2014, 15:40 от Dietmar Kühl
  • 1 голос
  • 0 ответов
  • 0 просмотров
0 ответов

Короче говоря, в test_int_no_if нет ничего, что зависит от того, являюсь ли я constexpr, а в test_int () - есть. («constexpr if» работает только с выражениями времени компиляции.)

аюсь сравнить параметр функции внутри оператора constexpr-if. Вот простой пример: constexpr bool test_int(const int i) { if constexpr(i == 5) { return true; } else { return false; } }Однако, когда я компилирую это с GCC 7 со ...

Задан 28 Jul 2017, 15:26 от GoogieK
  • 5 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

Перечисление C ++ 11 с членами класса и оптимизация времени соединения constexpr

В моем проекте у меня много перечислений, которые должны иметь дополнительные атрибуты, связанные с членами перечисления, и вспомогательные статические методы, связанные с типом перечисления. Насколько я знаю, это невозможно сделать со ...

Задан 30 Dec 2012, 12:08 от David L.
  • 298 голосов
  • 13 ответов
  • 0 просмотров
13 ответов

@plivesey, не могли бы вы отредактировать свой ответ с лучшим примером.

ажется, что наличие «функции, которая всегда возвращает 5» нарушает или ослабляет значение «вызова функции». Должна быть причина, или необходимость в этой возможности, иначе ее не будет в C ++ 11. Почему это там? // preprocessor. #define ...

Задан 20 Jan 2011, 14:07 от Warren P
  • 8 голосов
  • 2 ответа
  • 0 просмотров
2 ответа

Что мне разрешено делать со статическим, инициализированным в классе элементом данных constexpr?

Вероятно, это немного необычный вопрос, поскольку он требует более полного объяснения короткого ответа, данногоДругой ...

Задан 27 Jan 2013, 13:45 от Andy Prowl
  • -2 голосов
  • 2 ответа
  • 0 просмотров
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 >= ...

Задан 30 Dec 2018, 14:22 от Amos
  • 14 голосов
  • 2 ответа
  • 0 просмотров
2 ответа

Путаница с константными выражениями

Это какое-то продолжениеЭта тема [https://stackoverflow.com/questions/16023262/unexpected-non-constant-stdinitializer-list] и имеет дело с небольшой частью этого. Как и в предыдущем разделе, давайте рассмотрим, что наш компиляторconstexpr функции ...

Задан 17 Apr 2013, 10:29 от Morwenn
  • 24 голосов
  • 2 ответа
  • 0 просмотров
2 ответа

Добавьте в функцию constexpr

Следующий фрагмент кода компилируется под clang ++ 3.7.0, но запрещен g ++ 5.3.1. Как есть

Задан 15 Dec 2015, 03:38 от Kan Li
  • 55 голосов
  • 2 ответа
  • 0 просмотров
2 ответа

Когда функция constexpr оценивается во время компиляции?

Поскольку возможно, что функция, объявленная как constexpr, может быть вызвана во время выполнения, по каким критериям компилятор решает, вычислять ли ее во время компиляции или во время выполнения? template<typename base_t, typename expo_t> ...

Задан 09 Jan 2013, 23:18 от Byzantian
  • 3 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

Как заставить распространение const через встроенную функцию?

Я пытаюсь заставить препроцессор выполнить для меня некоторую математику, чтобы константа распространялась во встроенную сборку. Вот уменьшенный случай:

Задан 19 Jul 2015, 05:54 от jww
Page 1 of 4
1 2 3 4