Существует хакерский способ преобразования захватной лямбда в указатель функции, но вам нужно быть осторожным при ее использовании:
https://codereview.stackexchange.com/questions/ 79612 / c-ifying-a-capture-lambda
Тогда ваш код будет выглядеть следующим образом (предупреждение: компиляция мозга):
int main()
{
vector entries;
auto const callback = cify([&](const char *fpath, const struct stat *sb,
int typeflag) -> int {
entries.push_back(fpath);
return 0;
});
int ret = ftw("/etc", callback, 1);
for (auto entry : entries ) {
cout << entry << endl;
}
return ret;
}