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;
    }
}

【参照】
pstade::oven::checked