This survey is to gather implementation knowledge about optional<> in the C++ community, its uses, and other things.
Name (of you, your Project, or your Company) (Can be Anonymous)
Your optional(s), and how you use them!
This section will ask about various kinds of optionals you may use, and how you might use them. They will also talk about references, rebinding, and assign/assign-through. If you do not understand this terminology, simply pick to the best of your ability and then answer the questions below the check boxes that indicate your level of knowledge! You're also free to go out into the wild or ask around about what the terms may mean. If you would like a quick read (this one is trying to sell a point, but it still overviews the landscape nicely), see:
What kind of optional(s) do you use?
std::optional, absl::optional, mnmlstc::optional, nonstd::optional (no references allowed)
boost::optional, tl::optional, sol::optional, akrzemi1/optional (references allowed, rebinding)
???::optional (references allowed, assign on op=/assign-through)
br::optional, fr::optional (references allowed, rebinding, optional<void> allowed)
What features do you *wish* your optional had (or what features do you not want to live without in your optional)? (Select all that apply)
Reference support - optional<T&> (no assign-through OR rebind)
Reference support - optional<T&> assign-through
Reference support - optional<T&> rebinding
Void support - optional<void>
Monadic interfaces - optional<T>.map(...).and_then(...), and more
Tombstoning / Not-A-Valid-Value / Markable / Compression support - optional<std::size_t, mark_invalid<npos>>
Do you know the difference between a Rebinding Optional and an Assign-Through optional<T&>?
Do you care about the difference between a Rebinding Optional and an Assign-Through optional<T&>?
What kind of project did you use it in?
Long-Term Hobby Project
Small Company Project
Large Company Project
Flagship Company Project
How much code (SLoC, projects, people/companies) depends on your optional? (Rough estimates are fine!)
Please describe anything about your optional that is non-standard, if it has ever come up. Any porting success or troubles from your optional to std::optional or similar is also greatly appreciated!
Any extensions and/or unique things about your (personal/the company's/the project's) optional?
If you ever had to port from one optional type to another, any porting troubles between optional types or similar?
If you are the person that implemented the optional (and not just use it), please describe any interesting implementation choices!
Page 1 of 1
Never submit passwords through Google Forms.
This content is neither created nor endorsed by Google.
Terms of Service