Is there a reason why `boost::variant` does not support in place object construction? The `std::variant` has `emplace<T>(...)` though.