Я хочу передать лямбда-функцию как обратный вызов другой функции:
void test(const std::function<void()> fn){
fn();
}
Это работает, все нормально. Но. Он не встраивает его, независимо от того, насколько высокий уровень оптимизации компилятора я использую:
доказательство
И когда я играю некоторое время, я обнаружил, что с шаблоном -it становится inlined:
template<typename T>
void test2(T fn){
fn();
}
Итак... Есть ли способ сделать его встроенным без шаблонов? И почему он становится встроенным в объявление шаблона? Только тип функции передается как аргумент шаблона, а не сама функция.