oven::checked
oven::checkedは、範囲に境界チェックする能力を加えるRangeアダプタです。
イテレータが範囲外へ行ったときにはstd::out_of_rangeが投げられます。
#include <iostream> #include <string> #include <pstade/oven/checked.hpp> #include <pstade/oven/algorithm.hpp> using namespace pstade::oven; int main() { std::string in = "12345"; std::string out = "1234"; try { copy(in, boost::begin(out|checked)); } catch (std::out_of_range& e) { std::cout << e.what() << std::endl; } }
境界チェック付き範囲の先頭イテレータを取得するchecked_beginもあります。
#include <iostream> #include <string> #include <pstade/oven/checked.hpp> #include <pstade/oven/algorithm.hpp> using namespace pstade::oven; int main() { std::string in = "12345"; std::string out = "1234"; try { copy(in, checked_begin(out)); } catch (std::out_of_range& e) { std::cout << e.what() << std::endl; } }