Вопросы по теме 'c++17'
Что такое контракты (как предложено для С++ 17)?
Я читал о контрактах в Мысли о C++ 17 Б. Страуструпа и помог провести небольшую презентацию, рассказав о них, но я не уверен, что действительно их понял.
Итак, у меня есть несколько вопросов, и если можно проиллюстрировать их некоторыми...
20594 просмотров
schedule
17.05.2024
Как этот код может быть constexpr? (std :: chrono)
В стандарте P0092R1 Говард Хиннант написал:
template <class To, class Rep, class Period,
class = enable_if_t<detail::is_duration<To>{}>>
constexpr
To floor(const duration<Rep, Period>& d)
{
To t =...
1174 просмотров
schedule
25.10.2023
Оператор меньше чем через неявное преобразование?
Рассмотрим следующий класс:
struct C
{
/* Class contents, without any arithmetic operator... */
constexpr operator int() noexcept; // Implicit conversion to int
};
У меня вопрос:
Можно ли использовать C в стандартных...
649 просмотров
schedule
09.05.2024
std::list‹std::unique_ptr›: пустой список инициализаторов вместо конструктора по умолчанию
Код
#include <list>
#include <memory>
class B;
class A {
std::list<std::unique_ptr<B>> bs;
public:
A();
~A();
};
int main()
{
A x;
return 0;
}
очевидно компилируется. Это не связано, потому что...
540 просмотров
schedule
08.07.2022
Общий рекурсивный мьютекс в стандартном C++
Для C++17 запланирован класс shared_mutex . И shared_timed_mutex уже в C++14. (Кто знает, почему они пришли именно в таком порядке, но все равно.) Затем идет recursive_mutex и recursive_timed_mutex , начиная с C++11. Что мне нужно,...
8110 просмотров
schedule
17.02.2024
Подготовка к std::iterator устарела
21 марта st комитет по стандартам проголосовал за прекращение поддержки std::iterator . предложено в P0174 :
Длинная последовательность аргументов void гораздо менее понятна читателю, чем просто предоставление ожидаемых typedef в самом...
22451 просмотров
schedule
12.06.2024
Будет ли std::experimental::Optional‹› поддерживать ссылки?
На данный момент boost::optional<> поддерживает ссылки, а std::experimental::optional<> в моей системе из libstdc++ — нет. Отражает ли это то, что может стать стандартом?
Я знаю, что автор факультативного предложения выделил...
759 просмотров
schedule
22.02.2024
Продлевают ли константные ссылки в структурированных привязках время жизни разложенного объекта?
Гарантирует ли запись const auto& [a, b] = f(); продление срока службы объекта, возвращаемого из f() , или, по крайней мере, объекты, к которым привязаны a и b ? Читая предложение , я не вижу ничего очевидного в язык, чтобы убедиться, что...
1353 просмотров
schedule
16.07.2022
Enums поддерживает наследование
Я часто сталкиваюсь с ситуацией, когда мы создаем класс, который воздействует на какое-то перечисление, но потом мы получаем его и хотим добавить в перечисление больше значений, не меняя базовый класс.
Я вижу этот вопрос из 2009 года: Наследование...
4639 просмотров
schedule
28.05.2024
Вызывается ли конструктор перемещения после вызова функции преобразования?
Рассмотрим этот пример:
struct T { };
struct S {
operator T();
};
S s;
T t = s;
[dcl.init] приведет нас к [over.match.copy], который найдет функцию преобразования operator T() . Но на этом мы закончили или нам нужно вызвать...
775 просмотров
schedule
19.07.2022
Вывод типа аргумента шаблона из определения класса
Можно ли использовать вывод аргументов шаблона класса для класса C из определения одной из функций-членов C ? ... или я должен написать свой вспомогательный класс make_c , как в C ++ 03?
Рассмотрим этот минимизированный и упрощенный...
379 просмотров
schedule
09.09.2022
Пустая базовая оптимизация для лямбда-захватов — запрещена стандартом? Почему?
Недавно я столкнулся с ситуацией, когда у меня оказалось большое количество вложенных лямбда-выражений для построения цепочек асинхронных вычислений .
template <typename F>
struct node : F
{
node(F&& f) : F{std::move(f)}
{...
405 просмотров
schedule
21.07.2022
байт и неоднозначный символ из-за использования объявлений?
Мы являемся библиотекой C++ . В течение многих лет у нас было typedef unsigned char byte; в глобальном пространстве имен. Пользовательские программы и другие библиотеки предоставляли совместимые определения byte , поэтому проблем не возникало....
8984 просмотров
schedule
05.03.2024
Является ли смещение вправо неопределенным поведением для отрицательного числа в cpp и в java?
Чтобы оптимизировать мой код cpp, в некоторых случаях я пытаюсь использовать смещение вправо. Вот пример:
int main()
{
int i = (1 - 2) >> 31; // sizeof(int) == 4
...
...
}
Я напечатал i и получил -1 . Это означает,...
841 просмотров
schedule
21.10.2022
Почему sizeof(std::variant) имеет тот же размер, что и структура с теми же элементами?
Шаблон класса std::variant представляет типобезопасное объединение. Экземпляр std::variant в любой момент времени либо содержит значение одного из своих альтернативных типов, либо не имеет значения.
sizeof(std::variant<float, int32_t,...
5544 просмотров
schedule
30.10.2023
Можно ли получить первый тип пакета параметров в одну строку?
У меня есть пакет параметров, заданный в классе вариативного шаблона, и я хочу извлечь первый тип.
В настоящее время я делаю это, что отлично работает, но как-то громоздко. Можно ли то же самое сделать проще? FirstEntityType должен быть...
3690 просмотров
schedule
20.09.2022
Проверка того, что тип шаблона T является частью пакета вариативных параметров в C++17
Я хочу проверить, что тип T также является частью пакета параметров Ts . Есть решения , которые делают это в С++ 14, но я не знаю, можно ли это упростить в С++ 17. Если T не найдено в Ts , компилятор должен остановиться...
129 просмотров
schedule
20.08.2022
Разрешено ли копирование / перемещение elision, чтобы программа, использующая удаленные функции, имела правильный формат?
Рассмотрим следующий код:
#include <iostream>
struct Thing
{
Thing(void) {std::cout << __PRETTY_FUNCTION__ << std::endl;}
Thing(Thing const &) = delete;
Thing(Thing &&)...
423 просмотров
schedule
23.01.2024
Вывод аргумента шаблона для шаблонов классов в С++ 17: я делаю это неправильно?
Согласно https://gcc.gnu.org/projects/cxx-status.html , версия 7 g++, используемая с флагом -std=c++1z , поддерживает вывод аргументов шаблона для шаблонов классов.
Я ожидаю компиляции следующего кода, тем более что Base является абстрактным...
4400 просмотров
schedule
24.11.2023
Преобразование std::any в неизвестный тип
Если у меня есть std::any из std::string или int , как я могу привести это к содержащемуся типу?
std::any имеет type , однако я не могу использовать этот тип для приведения.
Пример:
#include <any>
#include <iostream>...
3797 просмотров
schedule
17.12.2023