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

3 ответа

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

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

2 ответа

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

раньше я использовал такой код, и ясно, что у компилятора достаточно информации для работы, я не совсем понимаю, почему он компилируется: template <class T, class I> auto foo(const T& t, I i) { return std::get<i>(t); } int main() { std::cerr << ...

13 ответов

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

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

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

1 ответ

Спасибо за ответ. Я обновил свой вопрос, чтобы уточнить, что именно я ищу.

.cppreference.com/w/cpp/language/initializationНеупорядоченная динамическая инициализация, которая [http://en.cppreference.com/w/cpp/language/initialization]: [Так в оригинале] применяется только к (статическим / локально-локальным) шаблонам ...

1 ответ

) разрешить гиперссылки, но я сослался на номер вопроса для этого вопроса.

ество MSVC 2017 с-std=c++17 дроссели на следующем примере: #include <iostream> struct TC { static TC const values[]; static TC const& A; static TC const& B; static TC const& C; int const _value; }; inline constexpr TC const TC::values[]{ { 42 }, ...

1 ответ

является constexpr и тривиально копировать конструктивно.

дующем примере я могу получить доступ кconstexpr переменнаяx изнутри лямбдаy без явного захвата. Это невозможно, еслиx не объявлен какconstexpr. Существуют ли специальные правила, которые применяются кconstexpr для захвата? int foo(auto l) { // ...

3 ответа

Я не хотел сказать, что это ваша вина :) Но, может быть, вы помните этот код и могли бы воспроизвести его здесь?

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

1 ответ

Неоптимизированный макро-путь связан с тем, что некоторые инструкции требуют немедленного постоянного аргумента, который в противном случае было бы проблематичным получить при -O0 (необходимо встроить функцию, а затем распространить значение).

инство компиляторов C ++ поддерживают инструкции SIMD (SSE / AVX) с такими интрижками, как _mm_cmpeq_epi32Моя проблема в том, что эта функция не помечена какconstexprхотя "семантически" нет причин, чтобы эта функция неconstexpr так как это ...

4 ответа

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

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

3 ответа

 и OP спрашивает, какой компилятор верен, а не как это исправить. Хорошим ответом было бы сообщение OP о том, верны ли clang или gcc, чего у вас нет.

отрим следующий код: template <int N, typename T> void f(T) { } template <typename T> constexpr int k(T&) { return 0; } int main() { constexpr auto i = 1; f<k(i)>([&i] { f<k(i)>(0); }); }clang++ (багажник) компилирует это.g++ (багажник) ...