Вопросы по теме 'constexpr'

имитировать отражение времени компиляции в C ++
У меня есть следующая структура: struct Data { std::string firstMember; std::string secondMember; std::string thirdMember; }; Я хочу выбрать одного из членов по имени строки constexpr способом, например Data instance;...
2463 просмотров
schedule 02.12.2021

constexpr, массивы и инициализация
Есть ли что-нибудь в мире C ++, что сделало бы то, что я пытаюсь сделать, возможным? template < typename T , size_t Size > struct array { constexpr T buf[Size]; constexpr size_t size() const { return Size; } }; template...
5501 просмотров
schedule 23.11.2021

неявный constexpr?
Могут ли компиляторы C ++ 11 (и могут ли они) заметить, что функция является constexpr , и рассматривать их как таковые, даже если они не объявлены как constexpr ? Я демонстрировал использование constexpr кому-то, используя пример прямо из...
921 просмотров
schedule 09.09.2021

constexpr не работает, если функция объявлена ​​внутри области класса
Я использую g ++ 4.8.0, который не содержит более ранней constexpr ошибки. Таким образом, приведенный ниже код работает нормально : constexpr int size() { return 5; } int array[size()]; int main () {} Однако, если я заключу обе...
6662 просмотров
schedule 11.11.2021

Может ли функция C ++ constexpr действительно принимать непостоянное выражение в качестве аргумента?
Я определил функцию constexpr следующим образом: constexpr int foo(int i) { return i*2; } И вот что в основной функции: int main() { int i = 2; cout << foo(i) << endl; int arr[foo(i)]; for (int j = 0; j...
4212 просмотров
schedule 08.10.2021

Индексирование массива constexpr или нет? GCC несовместим?
В своем ответе на мой вопрос Избегание структуры в функции вариативного шаблона iavr отметил, что " std :: array :: operator [] является constexpr только в C ++ 14 ". Мой вопрос здесь - убедиться, что поведение GCC непоследовательно, и это не мое...
874 просмотров
schedule 14.10.2021

Модификатор constexpr не действует
У меня проблема с функциями constexpr. Я думал, что любая функция, объявленная с модификатором constexpr должна возвращать константу времени компиляции, но на самом деле это не работает. (Eclipse + MinGW, gcc 4.8.1) #include <ctime>...
43 просмотров
schedule 30.11.2021

ограничение глубины constexpr с помощью clang (fconstexpr-depth, похоже, не работает)
Есть ли способ настроить глубину создания экземпляра constexpr? Я использую -fconstexpr-depth = 4096 (используя clang / XCode). Но по-прежнему не удается скомпилировать этот код с ошибкой: переменная Constexpr fib_1 должна быть инициализирована...
3271 просмотров
schedule 13.10.2021

С ++ 11 constexpr сглаживает список std :: array в массив
Я начинаю с C ++ 11, constexpr и метапрограммирование шаблонов кажется хорошим способом сэкономить скудную оперативную память на крошечном микроконтроллере. Есть ли способ написать шаблон для сглаживания списка массива constexpr, мне нужен способ...
6538 просмотров
schedule 10.09.2021

Обходной путь для ошибки constexpr в GCC 4.9
У меня есть следующий фрагмент кода, который представляет собой более крупный фрагмент кода: #include <iostream> using namespace std; template<size_t N> class A { public: static constexpr size_t getN() {return N;} };...
967 просмотров
schedule 20.11.2021

Меня смущает функция constexpr?
В C ++ Primer, пятое издание, §6.5.2: Функция constexpr определяется как любая другая функция, но должна соответствовать определенным ограничениям: Тип возвращаемого значения и тип каждого параметра в должны быть буквальным типом (§2.4.4, стр....
2449 просмотров
schedule 17.09.2021

C ++ создает двумерный массив с использованием размера заданного вектора безопасным для памяти способом
Как мне добиться следующего: std::vector<int> vec = { 1, 2, 3 }; const int N = vec.size(); // Now create NxN 2D array. Во-первых, я знаю, что могу сделать это с new , но мне придется не забыть удалить его позже, и я бы предпочел не...
379 просмотров
schedule 27.11.2021

Преобразование кода в constexpr
Каковы общие советы по преобразованию кода в constexpr ? Скажем, есть алгоритм некоторой геометрической трансформации (входной) геометрической фигуры. Ввод и вывод различаются по природе и размеру и нетривиально зависят друг от друга. В настоящее...
869 просмотров
schedule 22.11.2021

как мне утверждать из функции constexpr с отключенными исключениями?
Если я хочу подтвердить обнаруженную ошибку из функции constexpr C ++ 11 во встроенной конструкции небольшого процессора, отключение прерываний отменяет предлагаемый метод обработки ошибок (см. Ответ Эрика Ниблерса здесь ) Вот пример сокращенного...
439 просмотров

Использование constexpr вместе с getenv (или альтернативой)
Я пытаюсь захватить переменные среды с сервера сборки как константы времени компиляции, которые можно использовать в библиотеке сборки. У меня есть статический класс, который можно запросить для этих констант, и я хотел бы использовать constexpr с...
825 просмотров

Как статически запросить статическую переменную-член, которая может не существовать, предоставляя значение по умолчанию?
Я программирую несколько классов, в которые добавляю зависимости через class параметры шаблона. В некоторых случаях классы зависимостей имеют или могут иметь статические члены constexpr, которые объявляют некоторые из их конкретных характеристик....
55 просмотров
schedule 24.11.2021

Имеет ли смысл конструктор перемещения constexpr?
Имеет ли смысл иметь constexpr конструктор перемещения? Например, рассмотрим следующее: #include <array> class C { public: constexpr C(std::array<int, 3> ar) : m_ar{ar} {} constexpr C(C&& other) :...
1220 просмотров
schedule 22.09.2021

Почему оператор == () в std :: array не помечен как constexpr?
Сравнивать вполне естественно std::array во время компиляции; и его operator==() , очевидно, constexpr 'able. Тем не менее - он не отмечен constexpr . Это преднамеренное или недосмотр? И - по какой причине он остался таким (видимо, и в C...
568 просмотров
schedule 18.11.2021

Генерация типов во время компиляции в функциях constexpr
#include <array> #include <tuple> typedef std::tuple<const int> TupleType; constexpr std::array<const int, 2> a = {1, 2}; constexpr void foo() { for (std::size_t i = 0; i < a.size(); ++i) { const int j =...
540 просмотров
schedule 03.11.2021

constexpr вариативный шаблон и распаковка std :: array
Я хотел бы написать шаблонную функцию constexpr, которая переставляет элементы массива, переданного в качестве параметра. Итак, я придумал что-то вроде этого: template <typename T, std::size_t N, typename... Ts> constexpr std::array<T,...
2126 просмотров
schedule 02.11.2021