Это, кажется, работает на платформах, которые я пробовал:
#include
// extern "C" linkage
extern "C" void foo(void (*fn_ptr)(int));
namespace {
struct bar {
static void f(int);
};
}
int main() {
// Usually works on most platforms, not guaranteed though:
foo(bar::f);
// Probably equally bad or worse?
foo([](int x) { std::cout << x << std::endl; });
}
, но затем снова , проходящую статическую функцию элементов, также работал на этих платформах, когда она не была необходима для .
Есть ли способ заставить лямбда иметь подходящую связь, чтобы сделать это безопасным и портативным? Или это уже?