#include <optional>
#include <variant>
#include <utility>
#include <set>
int main()
{
std::optional<std::variant<std::pair<int, int>, std::set<int>>> foo(std::in_place, {1, 4});
}
Run Code Online (Sandbox Code Playgroud)
std::variant 没有构造函数std::initializer_list<T>作为其第一个参数,而这个构造函数重载std::optional所做的只是传递初始化列表并将其他参数转发给内部类型构造函数时,这怎么可能呢?std::variant现在持有哪种类型,std::set还是std::pair?