The strategy interface the solve_cqpp driver requires: initialize/iterate/done/result. Any method that solves a CQPP (PGD today, see pgd.hpp) satisfies this. Structurally generic across iterative methods.
#include <cqpp.hpp>
template<class Strategy, class Problem, class State>
concept CQPPSolverStrategy =
requires(
const Strategy& s,
const Problem& prob, State& state) {
{ s.initialize(prob, state) } -> std::same_as<void>;
{ s.iterate(prob, state) } -> std::same_as<bool>;
{ s.done(state) } -> std::same_as<bool>;
s.result(state);
}
The strategy interface the solve_cqpp driver requires: initialize/iterate/done/result....
Definition cqpp.hpp:357