Как я могу гарантировать, что будет вызван конкретный метод во время компиляции?Обеспечение метода вызова во время компиляции
Например, предположим, что у меня есть объект с 2-мя методами:
struct Foo
{
... func1(...);
... func2(...);
};
и я хочу, чтобы убедиться, что func1 вызывается перед вызовом func2, то есть:
int main()
{
Foo f;
...
f.func1(...);
f.func2(...);
f.func2(...); // and so on
}
, но я хочу для генерации ошибки компиляции, если я сделаю что-то подобное:
int main()
{
Foo f;
...
f.func2(...); // generate a compile error due the fact that func1 must be called first
f.func1(...);
f.func2(...); // and so on
}
Вы можете попробовать использовать 'constexpr', но в этом случае он не будет работать. (В любом случае не гарантируется работа). –
Я думаю, это можно сделать только с помощью анализаторов кода. Сам компилятор может только предупредить вас о неиспользуемой функции - AFAIK. –
Если вам нужно сделать это, вероятно, вы должны продолжать думать о лучшем дизайне класса.Это скрупулезный антипаттерн: http://en.wikipedia.org/wiki/Sequential_coupling –