switch(placement) { \
case generator_base::horizontal_list: \
result = std::make_unique<generator<minimum, maximum, policy::placement::horizontal_list, select_action>>(); \
break; \
case generator_base::vertical_list: \
result = std::make_unique<generator<minimum, maximum, policy::placement::vertical_list, select_action>>(); \
break; \
case generator_base::table: \
result = std::make_unique<generator<minimum, maximum, policy::placement::table, select_action>>(); \
break; \
case generator_base::independent: \
result = std::make_unique<generator<minimum, maximum, policy::placement::independent, select_action>>(); \
break; \
default: \
assert(false); \
}