Я наткнулся на этот замечательный пост о проверке параметров в C #, и теперь я задаюсь вопросом, как реализовать нечто подобное в C ++. Главное, что мне нравится в этом материале, это то, что он ничего не стоит, пока первая проверка не пройдет, так как функция Begin()
возвращает null
, а другие функции проверяют это.
Очевидно, что я могу добиться чего-то подобного в C ++, используя Validate* v = 0; IsNotNull(v, ...).IsInRange(v, ...)
, и каждый из них передает указатель v
, плюс возвращает прокси-объект, для которого я дублирую все функции.
Теперь мне интересно, есть ли подобный способ добиться этого без временных объектов, пока первая проверка не пройдет. Хотя я предполагаю, что выделение чего-то вроде std::vector
в стеке должно быть бесплатным (действительно ли это правда? Я подозреваю, что пустой вектор не выделяет в куче, верно?)