Synopsis: | Use std::function instead of function pointers |
Language: | C++ |
Severity Level: | 10 |
Category: | Style |
Description: |
A reason to use std::function is that it offers more flexibility to the user (caller of the function): std::function accepts member- and free functions and accepts functions with bound extra arguments. Wrong example:
int foo(int x) { return x; } int (*foo_func)(int) = &foo; Right example:
int foo(int x) { return x; } std::function<int(int)> foo_func = &foo; more elegant: std::function<int(int)> foo_func = [](int x) { return x; }; even more elegant: auto foo_func = [](int x) { return x; }; |