Описание тега stdoptional
В C++ шаблон класса std::optional представляет необязательное значение, то есть то, которое может присутствовать или отсутствовать.
3
ответа
C++17: использование std::option для оценки, содержит ли enum значение
Я хотел бы проверить во время компиляции, если различные перечисления содержат данное значение, поэтому я написал следующее: #include <optional> enum class test_enum : int { VALUE_0 = 0, VALUE_1 = 1 }; // Template function to perform check tem…
03 окт '18 в 18:19
1
ответ
constexpr std:: необязательный сброс
Я рассматривал интерфейс для C++-17 std::optional шаблон класса и заметил, что reset а также assignment от nullopt не отмечены как constexpr. Был ли это недосмотр или есть причина, по которой эта операция не может быть помечена как constexpr?
20 дек '18 в 21:25
1
ответ
Позволяет ли стандарт C++ реализовывать std::option<double> без накладных расходов?
Я только что наблюдал, как cppcon рассказывает о системе Bloomberg datum, типе варианта, который использует избыточность в формате IEEE754 для кодирования того, какой тип хранится в базе данных. Поэтому мне было интересно, позволяет ли стандарт C++ …
22 окт '18 в 11:18
1
ответ
C++ стандартизирует поведение std:: необязательный при std::min и std::max?
У меня не установлен совсем новый компилятор, чтобы получить подсказку о том, что в итоге std::optional семантика будет. Но в C++14 следующее: #include <experimental/optional> #include <algorithm> int main() { using oint = std::experimen…
02 авг '17 в 20:46
2
ответа
std:: необязательный, реализованный как union против char[]/align_storage
Читая через реализацию GCC std::optional Я заметил кое-что интересное. я знаю boost::optional реализован следующим образом: template <typename T> class optional { // ... private: bool has_value_; aligned_storage<T, /* ... */> storage_; }…
14 сен '18 в 19:34
2
ответа
Разница между nullptr, {} и nullopt
Почему я не могу использовать nullptr вместо nullopt? И почему {} переводится как nullopt?
13 дек '17 в 11:18
3
ответа
Использование std:: необязательный для передачи std::vector<int> в функционал по ссылке
Мне неясно, является ли правильный код для передачи необязательного вектора целых в функцию по ссылке: void test_func(std::optional<std::vector<int>&> vec) или же void test_func(std::optional<std::vector<int>>& vec) Л…
09 дек '18 в 02:45
0
ответов
Я не могу найти, где std:: опция полезна
Я нашел код выше в этой ссылке, и он говорит, что этот пример, где std::option отлично подходит! class UserRecord { public: UserRecord(const std::string& name, std::optional<std::string> nick, std::optional<int> age) : mName{ name },…
21 янв '19 в 01:01
3
ответа
Есть ли какое-то преимущество в использовании std::option, чтобы избежать аргументов по умолчанию в функции?
Я портирую код на C++17, пытаясь использовать новые возможности, пока это возможно. Одна вещь, которая мне нравится, это идея использовать std::optional возвращать или нет значение в функции, которая может не работать в некоторых условиях. Мне было …
16 дек '17 в 01:36
3
ответа
Почему нет throw или sigsegv при доступе к пустому std:: необязательно?
Пример: #include <optional> #include <iostream> using namespace std; int main() { optional<int> t{}; // nullopt (empty) by default cout << *t << endl; return 0; } На самом деле эта программа печатает некоторое int (неин…
07 ноя '18 в 18:40
1
ответ
C++17 std:: необязательная ошибка: ожидаемое первичное выражение перед 'auto'
Я экспериментировал с функцией C++17 std::optional Необязательный тип возвратаstd::optional<std::pair<int, int>>, Я звонюsum_pairфункция в print_answerфункция и хотел дополнительный принт. В print_answerФункция Я хотел проверить, содержи…
15 июл '18 в 19:49
5
ответов
В чем преимущество std::option` над std::shared_ptr` и `std::unique_ptr`?
Рассуждение std::optional сделано, говоря, что это может или не может содержать значение. Следовательно, это спасает нас от усилий по созданию, возможно, большого объекта, если он нам не нужен. Например, фабрика здесь не будет содержать объект, если…
21 мар '17 в 14:22
2
ответа
Почему std::option::value() &&; вернуть &&?
У меня была ошибка во время выполнения, когда заменили некоторый код с помощью std:: option: Старый код: T getValue(); ... const auto& value = getValue(); value.get(); Новый код: std::optional<T> getValue(); ... const auto& value = get…
14 сен '17 в 12:34
1
ответ
В clang6 реализован std:: необязательный?
Я хочу использовать C++17 std::optional но, кажется, отсутствует в лягушке: > cat test.cxx #include <optional> int main(int, char **) { return 0; } > $CXX --version | head -n1 clang version 6.0.0 (trunk 317775) > $CXX -std=c++17 test.…
20 ноя '17 в 16:44
4
ответа
Альтернатива value_or, которая безразлична к возвращаемому типу
Я построил маленький класс Card перегрузка << Оператор, по сути, распечатывает костюм и стоимость карты. Детали реализации не имеют отношения к вопросу, который я хочу здесь задать, просто предположим очевидное. За Card Я построил класс CardDe…
06 июн '18 в 15:17
1
ответ
Ссылка на значение пустого необязательного
Я видел следующую картину несколько раз: // T is a type, this is at namespace scope std::aligned_storage_t<sizeof(T), alignof(T)> storage; T &t = reinterpret_cast<T &>(storage); Это, в сочетании с адекватным пространством имен и …
26 дек '17 в 10:45
3
ответа
std::option::value_or() - ленивая оценка аргумента
Можно ли оценить std::optional::value_or(expr) аргумент ленивым образом, так что expr были рассчитаны только в случае отсутствия значения? Если нет, то что будет правильной заменой?
05 авг '18 в 15:12
2
ответа
clang 5: std:: необязательные винты реализации std::is_constructible черта типа параметра
Действительно странное и неожиданное поведение clang 5 было обнаружено при переходе на C++17 и замене пользовательских std::optional решение со стандартным. По какой-то причине emplace() был отключен из-за неправильной оценки std::is_constructible ч…
26 дек '17 в 06:48
1
ответ
Как я могу использовать std:: необязательный в C++?
Я пытаюсь использовать std:: необязательный, но мой код вызывает ошибку.Я указал #include <experimental/optional> и параметры компилятора -std=c++1z, -lc++experimental, Как пользоваться std::experimental::optional? Ниже приведен код: #include …
27 май '17 в 13:15
2
ответа
Может ли функция быть применена к значению std::option, возвращая факультативное значение?
Я думаю, что применение функции к необязательному шаблону действительно полезно. Однако это сложно сделать с C++ STL. Например: std::optional<Vector3D> vec = tryCreateVector(); std::optional<float> length = vec.has_value() ? std::optiona…
24 авг '18 в 12:16