Код: Выделить всё
boost::program_options
Например, у вас есть программа «редактирования файлов», которая принимает входные и выходные имена файлов из командной строки. Далее предположим, что вы хотите сохранить их в переменных типа boost::filesystem::path. Теперь предположим, что у нас есть требование, чтобы входной файл должен существовать, а выходной файл не существовал (т. е. если выходной файл не существует). существует, мы создадим его.) В идеале у нас должен быть способ проверить существование входного аргумента и отдельно то, что выходной файл либо существует и доступен для записи, либо находится в каталоге, мы можем написать. (Конкретные различия здесь на самом деле не имеют значения. Это применимо к любой ситуации, когда вы используете один и тот же тип в нескольких местах, где вы хотели бы иметь разные правила проверки в зависимости от использования.)
Поскольку мы настраиваем валидаторы, создавая переопределения validate (которые предположительно находятся во время компиляции по их сигнатурам типов, похоже, что мы можем иметь только один валидатор для всех экземпляров boost::filesystem ::путь. Я видел ловушку notify, но сигнатура этих обратных вызовов имеет квалификатор const, поэтому не похоже, что вы можете изменить значение, и в документации неясно, как throw< /code>в обратном вызове notify будет работать система проверки.
Это кажется довольно фундаментальным ограничением на тот момент, когда я думаю, что я Я, наверное, что-то упустил. Мысли?
Подробнее здесь: https://stackoverflow.com/questions/454 ... ument-type