Stay organized with collections Save and categorize content based on your preferences.
A class that holds option structs indexed by their type.
An "Option" is any struct that has a public Type
member typedef. By convention they are named like "FooOption". Each library (e.g., spanner, storage) may define their own set of options. Additionally, there are common options defined that many libraries may use. All these options may be set in a single Options
instance, and each library will look at the options that it needs.
Here's an overview of this class's interface, but see the method documentation below for details.
.set<T>(x)
– Sets the option T
to value x
.has<T>()
– Returns true iff option T
is set.unset<T>()
– Removes the option T
.get<T>()
– Gets a const-ref to the value of option T
.lookup<T>(x)
– Gets a non-const-ref to option T
's value, initializing it to x
if it was not set (x
is optional).struct FooOption {
using Type = int;
};
struct BarOption {
using Type = std::set<std::string>;
};
...
Options opts;
assert(opts.get<FooOption>() == 0);
opts.set<FooOption>(42);
assert(opts.get<FooOption>() == 42);
// Inserts two elements directly into the BarOption's std::set.
opts.lookup<BarOption>().insert("hello");
opts.lookup<BarOption>().insert("world");
std::set<std::string> const& bar = opts.get<BarOption>();
assert(bar == std::set<std::string>{"hello", "world"});
Constructors Options()
Constructs an empty instance.
Options(Options const &) Parameter Name Descriptionrhs
Options const &
rhs
Options &&
rhs
Options const &
Options &
operator=(Options &&) Parameter Name Description rhs
Options &&
Options &
Functions set(ValueTypeT< T >) &
Sets option T
to the value v
and returns a reference to *this
.
struct FooOption {
using Type = int;
};
auto opts = Options{};
opts.set<FooOption>(123);
Parameters Name Description v
ValueTypeT< T >
the value to set the option T
typename T
the option type
Returns Type DescriptionOptions &
set(ValueTypeT< T >) &&
Sets option T
to the value v
and returns a reference to *this
.
struct FooOption {
using Type = int;
};
auto opts = Options{}.set<FooOption>(123);
Parameters Name Description v
ValueTypeT< T >
the value to set the option T
typename T
the option type
Returns Type DescriptionOptions &&
has() const
Returns true IFF an option with type T
exists.
typename T
the option type
Returns Type Descriptionbool
unset()
Erases the option specified by the type T
.
typename T
the option type
Returns Type Descriptionvoid
get() const
Returns a reference to the value for T
, or a value-initialized default if T
was not set.
This method will always return a reference to a valid value of the correct type for option T
, whether or not T
has actually been set. Use has<T>()
to check whether or not the option has been set.
struct FooOption {
using Type = std::set<std::string>;
};
Options opts;
std::set<std::string> const& x = opts.get<FooOption>();
assert(x.empty());
assert(!x.has<FooOption>());
opts.set<FooOption>({"foo"});
assert(opts.get<FooOption>().size() == 1);
Parameter Name Description typename T
the option type
Returns Type DescriptionValueTypeT< T > const &
lookup(ValueTypeT< T >)
Returns a reference to the value for option T
, setting the value to init_value
if necessary.
struct BigOption {
using Type = std::set<std::string>;
};
Options opts;
std::set<std::string>& x = opts.lookup<BigOption>();
assert(x.empty());
x.insert("foo");
opts.lookup<BigOption>().insert("bar");
assert(x.size() == 2);
Parameters Name Description value
ValueTypeT< T >
the initial value to use if T
is not set (optional)
typename T
the option type
Returns Type DescriptionValueTypeT< T > &
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-14 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-14 UTC."],[[["The `Options` class manages a collection of option structs, each identified by its unique type, with libraries able to define their own options or utilize common ones."],["You can interact with options using methods like `.set\u003cT\u003e(x)` to assign a value, `.has\u003cT\u003e()` to check if an option exists, `.unset\u003cT\u003e()` to remove an option, `.get\u003cT\u003e()` to retrieve a value, and `.lookup\u003cT\u003e(x)` to get or initialize a value."],["The `.get\u003cT\u003e()` method always returns a reference to a valid value, providing a default value if the option hasn't been set, and you can use `has\u003cT\u003e()` to check whether or not the option has been set."],["The class provides constructors to create empty instances or copy/move existing ones and offers operators to assign to other option instances."],["Multiple version references are available for browsing, ranging from version 2.10.1 up to the latest release candidate 2.37.0-rc."]]],[]]
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4