Вопросы по теме '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 просмотров
schedule
09.07.2023
Какие части стандартной библиотеки C ++ 14 могут быть и какие части будут сделаны constexpr?
С новыми упрощенными правилами constexpr C ++ 14 компилируйте -временное программирование становится более выразительным. Интересно, будет ли обновлена и Стандартная библиотека, чтобы воспользоваться ею. В частности, std::initializer_list ,...
1326 просмотров
schedule
31.05.2022
Являются ли литералы 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 просмотров
schedule
11.02.2023
Эквивалент 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 просмотров
schedule
18.11.2022
Строка с нулевым завершением, действительно ли это продиктовано стандартом?
Обсуждение
Известно, что начиная с C++11 и выше std::basic_string считаются внутренними буферами хранения, заканчивающимися нулевыми символами.
Основная причина этого изменения, среди прочего, заключалась в том, что предыдущее определение...
342 просмотров
schedule
26.02.2022