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

2 ответа

 конструктор? Это сделало бы весь мой вопрос недействительным / ненужным.

трите на этот код: struct NonConstexpr { NonConstexpr() { } }; template <typename T> struct Bar { NonConstexpr nonConstexpr; constexpr Bar() { } }; struct Foo { Bar<void> bar; constexpr Foo() { } };В этом кодеFooконструктор помечен какconstexpr, ...

1 ответ

Как ни странно, мне нужен тип по той же причине. Тело функции - это деталь реализации, и я хочу переместить ее в файл cpp. Но это оставляет тип возврата на сайте объявления без каких-либо вычетов, поэтому он не может быть автоматическим.

аюсь получить явный тип диапазона (я могу захотеть сохранить его как поле в классе в будущем). Однако, по некоторым причинам, он оцениваетvoid? #include <iostream> #include <set> #include <range/v3/view/transform.hpp> class Alpha { public: int ...

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 >= ...

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

1 ответ

Вот

ел бы инициализировать статическийstd::map где значение не подлежит копированию. Я позвоню своему классуValueClass. ValueClassимеетstd::unique_ptr как частный член, и я даже гарантирую, что ValueClass не будет копироваться ...

1 ответ

Да, это довольно неудачно. Если я правильно понимаю вещи, это то же самое для всех компиляторов из-за потенциальных изменений ABI в ближайшем будущем. Я могу ошибаться

ался выйти на новыйБиблиотека STL файловой системы, но по какой-то причине получаю ошибки.Clang++7 веб-сайт указывает, что он должен поддерживать новыйfilesystem библиотека - действительноclang опережаетg++ Я верю. Я использовал некоторый код из ...

1 ответ

Я не могу думать ни о каком, потому что, если мы сдерживаем обещание иметь точно такое же определение встроенной переменной с внешней связью через TU, компилятор может выбрать любой из них для ссылки на переменную, это будет то же самое технически, так как имеет только один TU и имеет глобальную переменную, объявленную в заголовке с соответствующими защитниками заголовка

отрим следующий заголовок и предположим, что он используется в нескольких TU: static int x = 0; struct A { A() { ++x; printf("%d\n", x); } };Какэтот ...

3 ответа

... или для любителей запутанного кода ...

у вызвать ошибку времени компиляции, если не в constexpr, если условия выполняются, например: if constexpr(condition1){ ... } else if constexpr (condition2) { .... } else if constexpr (condition3) { .... } else { // I want the else clause never ...

0 ответов

 (второе предложение). В первом случае тип существующего значения prvalue корректируется, в то время как во втором случае создается новое значение prvalue с типом, квалифицированным cv, который корректируется с помощью [expr.type] / 2, так что объект с типом cv-unqualified будет материализовано, что является дефектом.

родолжение моегопредыдущий вопрос [https://stackoverflow.com/questions/42989034/cv-qualifications-of-prvalues-in-c14] где очевидный консенсус заключался в том, что изменение в обработке cv-квалификаций prvalues ​​было довольно незначительным и ...

1 ответ

Обратите внимание, что компиляция объявления clang сама по себе не является ошибкой компилятора. Это класс ситуаций, которые плохо сформированы, диагностика не требуется.

ел бы использовать функцию и передатьconstexpr lambda, Тем не менее, он успешно компилируется, только если я позволю типу выводиться черезauto, Явно давая тип через-> std::array<event, l()> похоже на провал (первый случай). Почему это? template ...

1 ответ

Преимущество округления inline-ASM путем помещения значения float в переменную int

Я унаследовал довольно интересный кусок кода: inline int round(float a) { int i; __asm { fld a fistp i } return i; } Моим первым побуждением было отказаться от него и заменить звонки на(int)std::round (до C ++ 11, будет использоватьstd::lround ...