I have two structs A1
and A2
and another struct B
has constructors for both. How do I write a delegating constructor for std::variant<A1,A2>
?
#include <variant>
struct A1 {};
struct A2 {};
using A = std::variant<A1, A2>;
struct B {
B(const A1 &){}
B(const A2 &){}
B(const A& a)
:B(a) // <--- what do I put here to delegate like std::visit ?
{}
};
int main(int argc, char *argv[]) {
return 0;
}
I am looking for a clean modern way in the spirit of std::visit
. I know that I can use a static member function to construct a B
instance from A
using std::visit
and a lambda but that's not what I am asking for since I want to rely on implicit type conversion from A
to B
.
If you can use the copy constructor, you can do this (not scalable but work in this case) :
alternative with std::visit :