Для своих нужд был разработан враппер для простых типов данных. Враппер идет в составе библиотеки Mithril, её можно скачать
здесь (30 Кб). В предлагаемом архиве солюшен из трех проектов в которых иллюстрируется использование библиотеки, а так же небольшая статья. Для сборки предлагаемых проектов понадобиться MSVC 7.1 и boost, но в принципе подойдет любой другой компилятор — нужно только создать для него соответствующий проект.
Возможно библиотека будет для кого-то полезной и я не изобрел велосипеда в очередной раз
Я не стал оформлять статью в RSDN, поскольку мне пока интересно насколько будет актуальной предлагаемая библиотека.
Совсем коротенький пример по использованию (using опущен):
wrapper<int, MITHRIL_POLICIES_2(must_be_initialized, set_once), default_error_reporter> a;
try
{
a = 45;
a = 987; // logic error
}
catch( const logic_error& err )
{
cout << "Logic Error: " << err.what() << endl;
}
здесь:
int — "оборачиваемый" тип,
MITHRIL_POLICIES_2(must_be_initialized, set_once) — комбинация из стратегий контроля "обернутого" значения
default_error_reporter — стратегия реакции на провал проверок стратегий контроля.
All suggestions will be greatly appreciated