Hello,
I have a use of the visitor pattern (this was an answer provided to me on
c++-moderated) as shown below.
Question1: is the maximum number of variant<> arguments extendable?
Question2: Below, some of the variants I have are full template specs.
Is there a way to write the variant<> typedef with templates instead and
have
the operator() of the static visitor a template member.
Rds,
---------------
#include <iostream>
#include
struct derived1 {};
struct derived2 {};
struct derived3 {};
typedef boost::variant base;
// function object
struct operation : boost::static_visitor<int> {
int operator()(const derived1&) const {
return 1;
}
int operator()(const derived2&) const {
return 2;
}
int operator()(const derived3&) const {
return 3;
}
};
int main() {
base a = derived1();
operation op;
std::cout << a.apply_visitor(op) << std::endl; // prints "1"
base a = derived2();
std::cout << a.apply_visitor(op) << std::endl; // prints "2"
}