resolve incomplete types for boost::variant