Как примечание (но так как мы все равно здесь), я лично не слишком люблю ваш дизайн.Как потребитель вашего кода я бы ожидал, что load(<empty optional>)
загрузится ... нет страницы.Это то, что необязательно должно означать.
Одно из решений состоит в том, чтобы иметь две разные функции:
void load(int);
void load_all();
Если это кажется вам слишком радикальным, вы можете выполнить перегрузки несколькими способами:
struct load_all{};
void load(int);
void load(load_all);
Мне действительно нравится быть откровенным о том, что я запрашиваю и что я получаю.Вот почему я настоятельно предпочитаю вышеизложенное следующему решению:
void load(int);
void load();
Для полноты, хотя я бы не рекомендовал его (поскольку инструменты для работы с std::variant
громоздки, в противном случае это выражает намерениеочень хорошо):
struct load_all{};
void load(std::variant<int, load_all>);