Différences
Ci-dessous, les différences entre deux révisions de la page.
| |
| lang:cpp:optional [2023/02/01 12:01] – Création avec "{} ou std::nullopt" root | lang:cpp:optional [2023/03/14 12:27] (Version actuelle) – Ajout des spécificités root |
|---|
| ==={} ou std::nullopt=== | ===={} ou std::nullopt==== |
| |
| C'est la même chose. | C'est la même chose. |
| |
| [[https://stackoverflow.com/questions/57964217/stdoptional-construct-empty-with-or-stdnullopt|std::optional - construct empty with {} or std::nullopt?]] {{ :lang:cpp:optional:c_-_std_optional_-_construct_empty_with_or_std_nullopt_-_stack_overflow_01_02_2023_11_59_46_.html |Archive du 16/09/2019 le 01/02/2023}} | [[https://stackoverflow.com/questions/57964217/stdoptional-construct-empty-with-or-stdnullopt|std::optional - construct empty with {} or std::nullopt?]] {{ :lang:cpp:optional:c_-_std_optional_-_construct_empty_with_or_std_nullopt_-_stack_overflow_01_02_2023_11_59_46_.html |Archive du 16/09/2019 le 01/02/2023}} |
| | |
| | ====std::make_optional==== |
| | ''std::make_optional'' force la création d'un optional alors que std::optional peut copier un optional. |
| | |
| | <code cpp> |
| | #include <optional> |
| | #include <type_traits> |
| | |
| | int main() |
| | { |
| | auto inner=std::make_optional(325); |
| | auto opt2=std::make_optional(inner); // makes std::optional<std::optional<int>> |
| | auto opt3=std::optional(inner); // just a copy of inner |
| | static_assert(std::is_same_v<decltype(opt2), std::optional<std::optional<int>>>); |
| | static_assert(std::is_same_v<decltype(opt3), std::optional<int>>); |
| | } |
| | </code> |
| | |
| | [[https://stackoverflow.com/questions/62734897/what-is-the-point-of-stdmake-optional|What is the point of `std::make_optional`]] {{ :lang:cpp:optional:c_-_what_is_the_point_of_std_make_optional_-_stack_overflow_14_03_2023_12_26_26_.html |Archive du 04/07/2020 le 14/03/2023}} |
| | |
| | ====Spécificités==== |
| | ===Opérateur ternaire=== |
| | |
| | Il faut spécifier explicitement l'optional. |
| | |
| | <code cpp> |
| | std::optional<int> t; |
| | t = true ? 1 : std::optional<int>{std::nullopt}; |
| | </code> |
| | |