Пожалуйста, используйте метод implicit_value
, например,
desc.add_options()
("replay,r", po::value<std::string>()->implicit_value("stdin"), "bla bla bla")
Это позволяет опции принимать либо 0, либо 1 токен, и если токены не предоставлены, он будет действовать так, как если бы был указан stdin. Конечно, вы можете выбрать любое другое неявное значение, включая пустую строку и '-', как предложено mch.