Supported solvers are available on seperated packages, please check the project webpage of the supported solvers list.
An optional type is a templated class which modelize the possibility in C++ to have "no value" in a variable. It is safer than passing a null pointer as an exception will be launched if you try to dereference a variable which has no content.
See the following example:
A variant is an object-oriented way to define a C enum. Here is a small example:
Please note that a variant can never be empty.
See the Boost.Optional and Boost.Variant documentation for more information.