Вопросы с тегом «c++14»

331
Как реализовать классические алгоритмы сортировки в современном C ++?

std::sortАлгоритм (и его кузены std::partial_sortи std::nth_element) из стандартной библиотеки C ++ в большинстве реализаций сложный и гибридная объединение более элементарных алгоритмов сортировки , таких как выбор сортировки, вставки сортировка, быстрая сортировка, сортировка слиянием, или кучи...

205
Может ли современный C ++ получить производительность бесплатно?

Иногда утверждают, что C ++ 11/14 может повысить производительность даже при простой компиляции кода C ++ 98. Обоснование обычно происходит в соответствии с семантикой перемещения, поскольку в некоторых случаях конструкторы rvalue генерируются автоматически или теперь являются частью STL. Теперь...

170
С ++ 11, 14, 17 или 20 вводит стандартную константу для пи?

Существует довольно глупая проблема с числом пи в C и C ++. Насколько я знаю, M_PIопределено в math.hне требуется ни одного стандарта. Новые стандарты C ++ ввел много сложных математических в стандартной библиотеке - гиперболических функций, std::hermiteи std::cyl_bessel_i, различных генераторов...

166
Лямбда-захват как постоянная ссылка?

Можно ли захватить константной ссылкой в ​​лямбда-выражении? Я хочу, чтобы назначение, отмеченное ниже, не сработало, например: #include <cstdlib> #include <vector> #include <string> #include <algorithm> using namespace std; int main() { string strings[] = { "hello", "world"...

151
Каковы некоторые виды использования decltype (auto)?

На этот вопрос есть ответы на Stack Overflow на русском : Конструкция decltype (авто) В c ++ 14 decltype(auto)введена идиома. Обычно его используют для того, чтобы autoобъявления могли использовать decltypeправила для данного выражения . В поисках примеров «хорошего» использования идиомы я могу...

149
Как работает `void_t`

Я смотрел выступление Уолтера Брауна на Cppcon14 о современном программировании шаблонов ( часть I , часть II ), где он представил свою void_tтехнику SFINAE. Пример: дан простой шаблон переменной, который оценивает, правильно voidли сформированы все аргументы шаблона: template< class ... >...

146
Когда следует использовать автоматическое определение типа возвращаемого значения C ++ 14?

С выпущенным GCC 4.8.0 у нас есть компилятор, который поддерживает автоматическое определение типа возвращаемого значения, часть C ++ 14. С помощью -std=c++1yя могу сделать это: auto foo() { //deduced to be int return 5; } Мой вопрос: когда мне следует использовать эту функцию? Когда это...

142
Является ли #pragma когда-то частью стандарта C ++ 11?

Традиционно стандартным и переносимым способом избежать включения нескольких заголовков в C ++ было использование #ifndef - #define - #endifсхемы директив предварительного компилятора, также называемой схемой защиты от макросов (см. Фрагмент кода ниже). #ifndef MY_HEADER_HPP #define MY_HEADER_HPP...

135
Копирование / перемещение назначения в std :: vector :: erase () и std :: deque :: erase ()

В процессе ответа на другой вопрос я наткнулся на несколько иные формулировки для std::vector::erase()и std::deque::erase(). Вот что говорит C ++ 14 std::deque::erase( [deque.modifiers]/4-6выделение мое): Эффекты: ... Сложность: Количество вызовов к деструктору такое же, как и количество стертых...

114
Как общая лямбда работает в C ++ 14?

Как работает универсальная лямбда ( autoключевое слово как тип аргумента) в стандарте C ++ 14? Основан ли он на шаблонах C ++, где для каждого другого типа аргумента компилятор генерирует новую функцию с тем же телом, но замененными типами (полиморфизм во время компиляции), или он больше похож на...

111
Как с помощью C ++ избежать циклов for с условием «if» внутри них?

Почти со всем кодом, который я пишу, я часто сталкиваюсь с проблемами сокращения наборов в коллекциях, которые в конечном итоге заканчиваются наивными условиями «если» внутри них. Вот простой пример: for(int i=0; i<myCollection.size(); i++) { if (myCollection[i] == SOMETHING) { DoStuff(); } } С...

106
Что такое прозрачные компараторы?

В C ++ 14 ассоциативные контейнеры, похоже, изменились с C ++ 11 - [associative.reqmts] / 13 говорит: Шаблоны функций - членов find, count, lower_bound, upper_bound, и equal_rangeне должен участвовать в разрешении перегрузки , если тип Compare::is_transparentне существует. Какова цель сделать...

103
Добавляет ли C ++ 14 новые ключевые слова в C ++?

Комитет по стандартам C ++ имеет тенденцию уклоняться от добавления новых ключевых слов в язык, однако с C ++ 11 этого не произошло. Некоторые примеры: constexpr decltype thread_local auto // New usage noexcept nullptr static_assert alignof alignas Есть ли в C ++ 14 новые ключевые...

103
Безопасно ли связывать объекты C ++ 17, C ++ 14 и C ++ 11

Предположим, у меня есть три скомпилированных объекта, созданных одним и тем же компилятором / версией : A был скомпилирован со стандартом C ++ 11 B был скомпилирован по стандарту C ++ 14 C был скомпилирован со стандартом C ++ 17 Для простоты предположим, что все заголовки были написаны на C ++ 11...

99
Зачем нужны лямбда-выражения шаблона, представленные в C ++ 20, если в C ++ 14 уже есть общая лямбда-выражение?

c ++ 14 представили общие лямбды, которые позволили написать следующее: auto func = [](auto a, auto b){ return a + b; }; auto Foo = func(2, 5); auto Bar = func("hello", "world"); Совершенно очевидно, что эта общая лямбда funcработает так же, как и шаблонная функция func. Почему комитет C ++ решил...

92
error :: make_unique не является членом std

Я пытаюсь скомпилировать следующую программу пула потоков, опубликованную в обзоре кода, чтобы проверить ее. /codereview/55100/platform-independant-thread-pool-v4 Но я получаю ошибки threadpool.hpp: In member function ‘std::future<decltype (task((forward<Args>)(args)...))>...

90
Почему лямбда имеет размер 1 байт?

Я работаю с памятью некоторых лямбд в C ++, но меня немного озадачивает их размер. Вот мой тестовый код: #include <iostream> #include <string> int main() { auto f = [](){ return 17; }; std::cout << f() << std::endl; std::cout << &f << std::endl; std::cout...

89
Что такое const void?

В описании std::is_voidговорится, что: Предоставляет значение константы члена, равное true, если T является типом void, const void, volatile void или const volatile void. Тогда что могло быть const void, или volatile void? В этом ответе указано, что const voidтип возвращаемого значения будет...

89
Какова цель использования союза только с одним членом?

Когда я читал исходный код seastar , я заметил, что существует структура объединения, tx_sideкоторая имеет только один член. Это какой-то хак для решения определенной проблемы? К вашему сведению, я вставляю tx_sideструктуру ниже: union tx_side { tx_side() {} ~tx_side() {} void init() { new (&a)...