Результаты поиска по запросу "constexpr"
дает мне длину массива.
мой код имеет этоconstexpr строка constexpr char my_str[] = "hello";типmy_str содержит информацию о его размере, т.е.sizeof(my_str) является константой 6 и может использоваться везде, где требуется константа. Что оstrlen(my_str)? Может / должно ...
@NirFriedman Нет никаких исключений - просто все, что вы используете в постоянном выражении, должно использоваться в постоянном выражении. Если вы не используете его, это не должно быть.
раньше я использовал такой код, и ясно, что у компилятора достаточно информации для работы, я не совсем понимаю, почему он компилируется: template <class T, class I> auto foo(const T& t, I i) { return std::get<i>(t); } int main() { std::cerr << ...
@plivesey, не могли бы вы отредактировать свой ответ с лучшим примером.
ажется, что наличие «функции, которая всегда возвращает 5» нарушает или ослабляет значение «вызова функции». Должна быть причина, или необходимость в этой возможности, иначе ее не будет в C ++ 11. Почему это там? // preprocessor. #define ...
Спасибо за ответ. Я обновил свой вопрос, чтобы уточнить, что именно я ищу.
.cppreference.com/w/cpp/language/initializationНеупорядоченная динамическая инициализация, которая [http://en.cppreference.com/w/cpp/language/initialization]: [Так в оригинале] применяется только к (статическим / локально-локальным) шаблонам ...
) разрешить гиперссылки, но я сослался на номер вопроса для этого вопроса.
ество 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 }, ...
является constexpr и тривиально копировать конструктивно.
дующем примере я могу получить доступ кconstexpr переменнаяx изнутри лямбдаy без явного захвата. Это невозможно, еслиx не объявлен какconstexpr. Существуют ли специальные правила, которые применяются кconstexpr для захвата? int foo(auto l) { // ...
Я не хотел сказать, что это ваша вина :) Но, может быть, вы помните этот код и могли бы воспроизвести его здесь?
функция, которая состоит только из оператора возврата, может быть объявленаconstexpr и, следовательно, позволит оценивать во время компиляции, если все аргументыconstexpr и толькоconstexpr функции вызываются в его теле.Есть ли причина не ...
Неоптимизированный макро-путь связан с тем, что некоторые инструкции требуют немедленного постоянного аргумента, который в противном случае было бы проблематичным получить при -O0 (необходимо встроить функцию, а затем распространить значение).
инство компиляторов C ++ поддерживают инструкции SIMD (SSE / AVX) с такими интрижками, как _mm_cmpeq_epi32Моя проблема в том, что эта функция не помечена какconstexprхотя "семантически" нет причин, чтобы эта функция неconstexpr так как это ...
инициализация массива constexpr для сортировки содержимого
Это скорее загадка, чем проблема реального мира, но я попал в ситуацию, когда хочу написать что-то, что ведет себя точно так же, как template<int N> struct SortMyElements { int data[N]; template<typename... TT> SortMyElements(TT... tt) : data{ ...
и 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++ (багажник) ...