У меня есть std::function
, указывающий на функцию. Внутри этой функции я меняю указатель на другую функцию.
std::function<void()> fun;
void foo() {
std::cout << "foo\n";
}
void bar() {
std::cout << "bar\n";
fun = foo;
}
int main() {
fun = bar;
fun();
fun();
}
Я не вижу никакой проблемы, и она работает нормально (см. здесь), однако я не уверен, что это законно Сделай так. Есть ли что-то, чего я не хватает, чтобы этого не сделать (возможно, в стандартном черновике С++ (я быстро проверил, но ничего не видел))?