Frequently Asked Questions (FAQ)

What solvers are currently available?

Supported solvers are available on seperated packages, please check the project webpage of the supported solvers list.

What are those Optional and Variant types?

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:

   // Declare an empty optional int.
   boost::optional<int> optInt;

   // There is nothing in our optional int.
   // Check if this is really the case.
   if (optInt)
      assert (false);

   // Set a value in our optional int.
   optInt = 42;

   // Access our optional int.
   std::cout << *optInt << std::endl;

A variant is an object-oriented way to define a C enum. Here is a small example:

   // x can be a string or an int.
   boost::variant<int, std::string> x;

   // Set x to 42.
   x = 42;

   // Which allows to determine what is the current type of x
   // First type (int) is zero, second (string) is one, etc.
   assert (x.which () == 0);

   // Set x to "hello world".
   x = "hello world";

   // Test again.
   assert (x.which () == 1);

Please note that a variant can never be empty.

See the Boost.Optional and Boost.Variant documentation for more information.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines