constexpr — все вопросы

2ответа
4 голоса
Определение членов статических данных constexpr
Итак, я знаю, что в C ++ статические члены могут быть инициализированы внутри класса, если они являются константным литеральным типом, подобным следующему class test{ public: static conste
1ответ
4 голоса
вызывать метод constexpr для параметра шаблона?
std::array<...>::size() не является static constexpr метод; будучи constexpr я могу использовать его как параметр шаблона: #include <array> #include <stdio> int main(void) { s
2ответа
4 голоса
Члены в функторах constexpr, вызывающие выполнение во время выполнения
Я использую функторы для генерации кода, рассчитанного во время компиляции, следующим образом (я извиняюсь за длинный код, но я нашел единственный способ воспроизвести поведение): #include <ar
1ответ
4 голоса
Является ли const_cast действительным в константном выражении? (C ++ 14, C ++ 17)
Конкретная проблема, с которой столкнулся a, заключается в том, что существует некоторая непоследовательность в том, как компиляторы обрабатывают это. Например, этот код ( https://godbolt.org/z/0
1ответ
4 голоса
Обходной путь для преобразования lvalue в rvalue неактивного члена объединения в релаксированных константных выражениях
Запуск преобразования lvalue в rvalue неактивного члена объединения не является константным выражением. То есть, учитывая union: template<class T, class U> union A { constexpr A(T t) : t_{
1ответ
4 голоса
Программа не работает, если я объявляю класс const… а не constexpr?
Вот моя программа: #include <iostream> class Debug { public: constexpr Debug(bool h): hw(h){} constexpr bool any() { return hw; } private: bool hw; }; int main(){ const De
1ответ
4 голоса
массив constexpr в коде устройства CUDA
подскажите, пожалуйста, есть ли способ использовать массивы constexpr в коде устройства? Согласно «Руководству по программированию Cuda C 7.0» у меня нет проблем со скалярами constexpr, но, похоже,
1ответ
4 голоса
Изменение активного члена объединения в постоянных выражениях
Игра с constexpr и union Я обнаружил, что не могу изменить активный член union в constexpr. Только одно исключение: union пустых классов. constexpr bool t() { struct A {}; struct B {};
1ответ
4 голоса
Ответвление на constexpr оценка /перегрузка на constexpr
Настройка У меня есть функция, которая использует встроенные функции SIMD и хотела бы использовать ее внутри некоторых функций constexpr. Для этого мне нужно сделать это constexpr. Однако вс
2ответа
4 голоса
Сгенерирован ли компилятором конструктор constexpr по умолчанию?
Следующий код успешно компилируется с обоими clang ++ 3.8.0 и g ++ 7.2.0 (флаги компиляции: -std=c++14 -Wall -Wextra -Werror -pedantic-errors): struct Foo { constexpr operator bool() con
2ответа
4 голоса
Замена констант: когда использовать статический constexpr и встроенный constexpr?
Этот вопрос является дополнительным вопросом для C ++ 17: все еще использую перечисления в качестве констант ? . Устаревшие константы бывают разных форм, а именно: #define CONSTANT x литий>
1ответ
4 голоса
В чем разница между встроенной и неконтролируемой лямбда-захватом в заголовке?
Если я объявлю лямбда без захвата в заголовке, в чем разница между inline auto myLambda = []() { ... }; и constexpr auto myLambda = []() { ... }; Если я правильно понимаю, constexpr подраз
3ответа
4 голоса
constexpr, массивы и инициализация
Есть ли в мире C ++ что-нибудь, что сделало бы возможным то, что я пытаюсь сделать? template < typename T , size_t Size > struct array { constexpr T buf[Size]; constexpr si
1ответ
4 голоса
замены constexpr для математических констант, таких как M_PI
Существуют ли какие-либо константы C ++ 11 constexpr, которые можно использовать вместо макросов констант из <cmath>, то есть такие константы, как M_PI и друзья? Или не хватает каких-либо глоба
1ответ
4 голоса
массив constexpr и std :: initializer_list
Я пытался написать valarray во время компиляции, который можно использовать следующим образом: constexpr array<double> a = { 1.0, 2.1, 3.2, 4.3, 5.4, 6.5 }; static_assert(a[0] == 1.0, "");
2ответа
4 голоса
Расширение компилятора для оценки «сложной» функции (с известными входными значениями) во время компиляции, вне зоны действия «constexpr»
Пожалуйста, посмотрите этот пример . Попытка использовать constexpr для получения оценки времени компиляции будет крайне сложной, если не невозможной. Однако, где функция вызывается, все аргумен
1ответ
4 голоса
Деление с плавающей точкой на ноль, а не constexpr
При компиляции этого: constexpr double x {123.0}; constexpr double y = x / 0.0; std::cout << x << " / 0 = " << y << "\n"; Компилятор (gcc 4.9.2, -std = c ++ 11 или c ++
1ответ
4 голоса
Конвертировать код в constexpr
Каковы общие советы по преобразованию кода в constexpr? Скажем, есть алгоритм для некоторой геометрической трансформации (входной) геометрической фигуры. Вход и выход отличаются по своей природе и р
1ответ
4 голоса
Как правильно вычислить интегральные логарифмы с базой 2 во время компиляции?
У меня есть некоторое положительное постоянное значение, которое исходит из другой библиотеки, чем моя, назовите его the_val. Теперь я хочу, чтобы log_of_the_val был floor (log_2 (the_val)) - не гов
1ответ
4 голоса
Объявление делегирующего метода как constexpr всякий раз, когда вызываемая функция указана с constexpr
Пожалуйста, рассмотрите следующий класс template<class T> class foo { public: auto bar() { return m_t.bar(); } private: T m_t; }; Если мы хотим, чтобы foo<T>::bar не выбрас
1 2 3 4 5

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132