Как ни странно,
std::cout << boost::posix_time::from_iso_string("20120927T062299");// 99 seconds!
доходность 2012-Sep-27 06:23:39
то есть переполненные секунды переносятся в следующую минуту. Это действительно ожидаемое поведение? Если это так, как я могу заставить функцию потерпеть неудачу в таких обстоятельствах?
Разные разработчики библиотек имеют разные представления о том, что должно привести к ошибке и какой серьезности.
Ответ прост: если строка поступает из пользовательского ввода, проверьте ее самостоятельно, прежде чем предоставлять ее любой функции, ожидающей строку в надлежащем формате. Во всяком случае, это хорошая идея. В этом случае проверка регулярного выражения будет довольно простой.
Других решений пока нет …