Здравствуйте, Erop, Вы писали:
E>Здравствуйте, remark, Вы писали:
R>>Я бы не сказал, что тут плохой дизайн или плохая семантика. Новый интерфейс нет смысла придумывать — этот вполне адекватный. R>>О каких трюках ты говоришь — пока нет никакого решения.
R>>
E>Я бы сказал, что проблема чисто умозрительная
E>Адекватное решение, как мне кажется, в этом случае -- итератор
А это что по-твоему? Итератор чистой воды!
Если тебе нужна запись в базисе {begin, end, ++}, то читай
конструктор DBCommand — begin()
Fetch() — operator++ с одновременным сравнением с end()
Здравствуйте, remark, Вы писали:
R>Как на стадии компиляции форсировать проверку возвращаемого значения функции? Или это не возможно? R>Как ни странно на форуме ничего похожего не нашёл...
Читая A Policy-Based Observer(I), наткнулся на забавное расширение gcc:
Здравствуйте, Angler, Вы писали:
A>Здравствуйте, remark, Вы писали:
R>>Как на стадии компиляции форсировать проверку возвращаемого значения функции? Или это не возможно? R>>Как ни странно на форуме ничего похожего не нашёл...
A>Читая A Policy-Based Observer(I), наткнулся на забавное расширение gcc: A>
A>__attribute__((warn_unused_result));
A>
Прикольно. Я так понимаю, что это именно то, что мне надо. Если ещё с помощью pragma поднять уровень этого варнинга до error'а.
... жаль, что я работаю на msvc... Странно, что m$ не сделала чего-то подобного в __declspec
АТ>>>Не вижу причин почему последнее не должно компилироваться. Будет оно прекрасно компилироваться.
ПК>>Автор вопроса как раз хочет сделать так, чтобы оно не компилировалось.
АТ>Я понимаю. Мой ответ был задуман, как ответ на соообщение elcste, где он предлагает вариант с #define. Т.е. я имел в виду, что не вижу причин, почему последнее не должно компилироваться в контексте
АТ>#define some_func() int (some_func())
Если я правильно понимаю, в этом случае программа должна быть ill-formed в соответствии с 13.1/1-2.
Re[5]: Форсирование проверки возвращаемого значения
Здравствуйте, remark, Вы писали:
R>Как на стадии компиляции форсировать проверку возвращаемого значения функции? Или это не возможно? R>Как ни странно на форуме ничего похожего не нашёл...
R>Например:
R>
R>bool some_func();
R>if (some_func()); // компилируется
R>bool result = some_func(); // компилируется
R>some_func(); // не должно компилироваться
R>
Почемубы не параметр по ссылке?
void some_func(bool & result);
или
class Result
{
private:
bool value, isChecked;
public:
Result(bool v) : value(v), isChecked(false) { }
operator bool()
{
this->isChecked= true;
return this->value;
}
~Result()
{
if (!isChecked) { } // чего-то там...
}
};
Result some_func();
Re[2]: Форсирование проверки возвращаемого значения