How to initialize C++17 vector of pairs with optional element

Viewed 3207

In C++17, how do you declare and initialize a vector of pairs(or tuples) with an optional element?

    std::vector<std::pair<int, optional<bool> > > vec1 = { {1, true},
                                                           {2, false}, 
                                                           {3, nullptr}};

I have a pair where the second element may be null/optional.

2 Answers

You are looking for std::nullopt instead of nullptr.

std::vector<std::pair<int, std::optional<bool> > > vec1 =
  { {1, true}, {2,false}, {3,std::nullopt} };

Or simple use default construction:

std::vector<std::pair<int, std::optional<bool>>> vec1 {
    {1, true}, {2,false}, {3,{}}
};
Related