Предположим, у меня есть следующий фрагмент кода:
bool flag = true;
auto myFunction = [](int a, int b, bool flag)
{
if (flag)
{
// do something with a and b
}
}
Позже в коде я вызываю myFunction
тысячи раз в цикле, для того же значения flag
.
Затем у меня есть другой цикл, который также вызывает myFunction
тысячи раз, но для другого значения flag
.
Насколько я понимаю, будучи лямбда-функцией, она является встроенной функцией и поэтому будет повторяться везде, где она вызывается.
Мой вопрос: будет ли компилятор вычислять оператор if
до того, как"скопирует" встроенную функцию, и, таким образом, не придется выполнять эту проверку на каждой отдельной итерации?
Отказ от ответственности:
- Я знаю, что это может относиться к категории микрооптимизации, но я все же хотел бы получить ответ.
- Мой пример глупый; Я мог бы просто поместить операторы
if
вне циклов. Но это просто репрезентативный пример гораздо более сложного случая.
- Мое использование лямбда-функций основано на ответе на этот вопрос.
Спасибо!