Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(49)

Side by Side Diff: docs/optional.md

Issue 2749983002: use namespace base for base::make_optional in docs (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # base::Optional 1 # base::Optional
2 2
3 `base::Optional<T>` is a container that might contain an instance of `T`. 3 `base::Optional<T>` is a container that might contain an instance of `T`.
4 4
5 [TOC] 5 [TOC]
6 6
7 ## History 7 ## History
8 8
9 [base::Optional<T>](https://code.google.com/p/chromium/codesearch#chromium/src/b ase/optional.h) 9 [base::Optional<T>](https://code.google.com/p/chromium/codesearch#chromium/src/b ase/optional.h)
10 is an implementation of [std::optional<T>](http://en.cppreference.com/w/cpp/util ity/optional), 10 is an implementation of [std::optional<T>](http://en.cppreference.com/w/cpp/util ity/optional),
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 base::Optional<int> opt_2 = 2; 56 base::Optional<int> opt_2 = 2;
57 57
58 opt_1 == opt_2; // false 58 opt_1 == opt_2; // false
59 opt_1 = 1; 59 opt_1 = 1;
60 60
61 opt_1 <= opt_2; // true 61 opt_1 <= opt_2; // true
62 opt_1 == 1; // true 62 opt_1 == 1; // true
63 opt_1 == base::nullopt_t; // false 63 opt_1 == base::nullopt_t; // false
64 ``` 64 ```
65 65
66 `base::Optional<T>` has a helper function `make_optional<T&&>`: 66 `base::Optional<T>` has a helper function `base::make_optional<T&&>`:
67 67
68 ```C++ 68 ```C++
69 base::Optional<int> opt = make_optional<int>(GetMagicNumber()); 69 base::Optional<int> opt = base::make_optional<int>(GetMagicNumber());
70 ``` 70 ```
71 71
72 Finally, `base::Optional<T>` is integrated with `std::hash`, using 72 Finally, `base::Optional<T>` is integrated with `std::hash`, using
73 `std::hash<T>` if it is not empty, a default value otherwise. `.emplace()` and 73 `std::hash<T>` if it is not empty, a default value otherwise. `.emplace()` and
74 `.swap()` can be used as members functions and `std::swap()` will work with two 74 `.swap()` can be used as members functions and `std::swap()` will work with two
75 `base::Optional<T>` objects. 75 `base::Optional<T>` objects.
76 76
77 ## How is it implemented? 77 ## How is it implemented?
78 78
79 `base::Optional<T>` is implemented with a union with a `T` member. The object 79 `base::Optional<T>` is implemented with a union with a `T` member. The object
(...skipping 19 matching lines...) Expand all
99 99
100 ## When not to use? 100 ## When not to use?
101 101
102 It is recommended to not use `base::Optional<T>` as a function parameter as it 102 It is recommended to not use `base::Optional<T>` as a function parameter as it
103 will force the callers to use `base::Optional<T>`. Instead, it is recommended to 103 will force the callers to use `base::Optional<T>`. Instead, it is recommended to
104 keep using `T*` for arguments that can be omitted, with `nullptr` representing 104 keep using `T*` for arguments that can be omitted, with `nullptr` representing
105 no value. 105 no value.
106 106
107 Furthermore, depending on `T`, MSVC might fail to compile code using 107 Furthermore, depending on `T`, MSVC might fail to compile code using
108 `base::Optional<T>` as a parameter because of memory alignment issues. 108 `base::Optional<T>` as a parameter because of memory alignment issues.
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698