У меня есть код на С++, который возвращает std::function
. Я хотел бы назвать это из некоторого кода C. Это возможно? В качестве примера у меня есть следующий код:
typedef std::function<int(int)> AdderFunction;
AdderFunction makeAdder(int amount) {
return [amount] (int n) {
return n + amount;
};
}
extern "C" {
AdderFunction makeCAdder(int amount) {
return makeAdder(amount);
}
}
с clang++ -std=c++11 test.cpp
он вызывает следующее предупреждение:
'makeCAdder' has C-linkage specified, but returns user-defined type 'AdderFunction' (aka 'function<int (int)>') which is incompatible with C
Я понимаю, почему это происходит, но интересно, есть ли образец, чтобы сделать это возможным?