Вопросы по теме 'c++14'

Почему и массивы размера времени выполнения, и std::dynarray в С++ 14?
Проект C++14 включает в себя как массивы размера времени выполнения, так и контейнер std::dynarray . Насколько я могу судить, единственная реальная разница между ними заключается в том, что std::dynarray имеет интерфейс STL (например, begin ,...
9963 просмотров
schedule 23.04.2023

Влияние auto на время компиляции
Новое ключевое слово auto, которое мы получили в C++11, кажется мне довольно шаблонным, поэтому мой вопрос: будет ли оно вызывать такое же раздувание времени компиляции, как и шаблоны? Тот же вопрос в отношении полиморфных лямбд: [](auto val)...
1190 просмотров
schedule 19.05.2022

Рекомендации по перегрузке оператора constexpr?
Рассмотрим простой класс int Wrapper с перегруженным умножением operator*= и operator* . Для «старого стиля» перегрузки операторов можно определить operator* в терминах operator*= , и существуют даже такие библиотеки, как Boost.Operators...
9075 просмотров

Какие части стандартной библиотеки C ++ 14 могут быть и какие части будут сделаны constexpr?
С новыми упрощенными правилами constexpr C ++ 14 компилируйте -временное программирование становится более выразительным. Интересно, будет ли обновлена ​​и Стандартная библиотека, чтобы воспользоваться ею. В частности, std::initializer_list ,...
1326 просмотров

Являются ли литералы basic_string быстрее или лучше обрабатываются во время компиляции?
Просматривая черновик C++14/C++1y (n3690), я заметил введение basic_string литеральных суффиксов в разделе §21.7: inline namespace literals { inline namespace string_literals { // 21.7, suffix for basic_string literals: string operator ""...
346 просмотров

Эквивалент const_cast для std::Optional
Интерфейс моего класса включает в себя средство доступа к объекту, который может не существовать. В настоящее время он возвращает указатель, который может быть нулевым. Я хотел бы заменить указатель на std::optional , как предложено здесь ....
656 просмотров
schedule 31.05.2022

ошибка constexpr во время компиляции, но без накладных расходов во время выполнения
Существует хорошо известный трюк, позволяющий вызвать ошибку времени компиляции при оценке функции constexpr , выполнив что-то вроде этого: constexpr int f(int x) { return (x != 0) ? x : throw std::logic_error("Oh no!"); } И если функция...
6436 просмотров
schedule 10.01.2023

Предупреждение об автоматическом выводе типа возвращаемого значения: зачем нам decltype, когда return все равно определяет тип?
Это вопрос о том, что делать для функции-члена elementsSize () относительно автоматического вывода типа возвращаемого значения: #include <iostream> #include <vector> template<typename Element> class ElementVector {...
5345 просмотров
schedule 08.04.2022

В чем разница между auto и decltype(auto) при возврате из функции?
Я редко вижу decltype(auto) , но когда я это делаю, это меня смущает, потому что кажется, что он делает то же самое, что и auto при возврате из функции. auto g() { return expr; } decltype(auto) g() { return expr; } В чем разница между...
6855 просмотров
schedule 18.03.2023

Почему изменяемые лямбда-выражения, захватывающие инициализацию, не могут иметь изменяемые элементы данных?
Этот вопрос связан с предыдущим , где было замечено, что mutable лямбды init-capture несовместимы с диапазоном Boost и итератором transform для некоторых довольно неясных и глубоко вложенных сбоев typedef , которые могут или не могут быть легко...
453 просмотров
schedule 05.06.2022

C++ (14) и ручное управление памятью
Я только что получил комментарий, как Проблема в ручном управлении памятью. delete нет места в пользовательском коде, а начиная с C++14, нет и new Может кто-нибудь объяснить мне, почему?
4385 просмотров
schedule 04.09.2022

Диапазон/цикл по N переменным в [современном] C++
Что представляет собой лаконичный способ перебора N переменных любого типа для выполнения операции? Допустим, у меня есть переменные a , b , c , d , e и я хочу просмотреть их все, выполнив некоторую операцию.
360 просмотров
schedule 19.04.2022

Есть ли аналог std::lock/std::try_lock для try_lock_for и try_lock_until?
При получении нескольких мьютексов (или, с помощью boost, диапазона итераторов мьютексов) мы можем использовать std::lock или boost::lock , чтобы избежать взаимоблокировок из-за порядка блокировки. Имеются аналогичные функции std::try_lock и...
121 просмотров
schedule 22.07.2022

Когда переменная odr используется в С++ 14?
Черновик С++ 14 (N3936) гласит в §3.2/3: Переменная x, имя которой появляется как потенциально вычисляемое выражение ex, используется odr, если только применение преобразования lvalue-to-rvalue (4.1) к x не дает константного выражения (5.19),...
2577 просмотров
schedule 24.02.2023

Есть ли причина для нулевого размера std::array в С++ 11?
Рассмотрим следующий фрагмент кода, который вполне приемлем для компилятора C++11: #include <array> #include <iostream> auto main() -> int { std::array<double, 0> A; for(auto i : A) std::cout << i <<...
5231 просмотров
schedule 23.05.2022

Возврат лямбда-функции с захватом движения
У меня есть функция, которая создает лямбда-функцию с захватом движения (только C++1y) и возвращает ее. #include <iostream> #include <functional> #include <memory> using namespace std; function<int ()>...
814 просмотров
schedule 28.04.2024

Какие стандартные функции C++ можно использовать для запроса архитектуры машины/ОС?
Каковы стандартные функции и утилиты C++ для запроса свойств оборудования или возможностей операционной системы, на которых работает программа? Например, std::thread::hardware_concurrency() указывает количество потоков, поддерживаемых машиной. Но...
1393 просмотров
schedule 21.10.2022

Макрос для обобщенного захвата лямбда
Я хотел бы использовать обобщенный лямбда-захват, представленный в С++ 14 (см. > объяснение). Однако остальная часть моего кода удобна для C++11. Я хотел бы сделать что-то в духе #ifdef CPP14 // move capture in lambda #else // capture by-value...
352 просмотров
schedule 05.02.2023

Классы с шаблонными и нешаблонными операторами преобразования в условии оператора switch
Изначально проблема возникла в этом вопросе . Рассмотрим следующий код: class Var { public: operator int () const { return 0; } template <typename T> operator T () const { return T(); } }; int main() { Var v;...
1468 просмотров

Строка с нулевым завершением, действительно ли это продиктовано стандартом?
Обсуждение Известно, что начиная с C++11 и выше std::basic_string считаются внутренними буферами хранения, заканчивающимися нулевыми символами. Основная причина этого изменения, среди прочего, заключалась в том, что предыдущее определение...
342 просмотров
schedule 26.02.2022