En C ++ 17, ¿cómo declara e inicializa un vector de pares (o tuplas) con un elemento opcional?
    std::vector<std::pair<int, optional<bool> > > vec1 = { {1, true},
                                                           {2, false}, 
                                                           {3, nullptr}};Tengo un par donde el segundo elemento puede ser nulo / opcional.

std::piecewise_constructTambién puede proporcionar alternativas interesantes.resetaquí.Respuestas:
Estás buscando en
std::nulloptlugar denullptr.fuente
std::como este? ¿Por qué no solousing std::vectory amigos, para que puedas escribirvector<pair<int, optional<bool>>? Lee mucho más sanamentevector,pair,optional, etc estoy usando en esta línea. La inclusión del espacio de nombres en línea me dice inequívocamente de dónde proviene esa función y qué hace; La línea es autónoma. Esto es especialmente cierto para proyectos más grandes (ya que evita los conflictos de espacio de nombres por completo), pero también es útil para ejemplos de código conciso.std?arg,count,find,sizestd::es totalmente discreto. Sería diferente si el nombre del espacio de nombres fuera mucho más largo.O uso simple construcción predeterminada:
fuente
std::nulloptcomunica mejor la intención.