В каких случаях вызов функции не приводит к её выполнению?

В каких случаях вызов функции (т.е. func()) не приводит к её выполнению?


Ответы (1 шт):

Автор решения: EOF

Мне известно два случая:

  1. Когда вызов функции является аргументом decltype:
#include <iostream>

int func(int x)
{
    std::cout << "x is " << x << std::endl;
    return 123;
}

int main()
{
    decltype(func(555)) var;
    // Ничего не выведет в терминал
    return 0;
}
  1. Когда вызов функции является аргументом sizeof:
#include <iostream>

int func(int x)
{
    std::cout << "x is " << x << std::endl;
    return 123;
}

int main()
{
    std::cout << sizeof(func(555)) << std::endl;
    // Выведет на экран 4
    return 0;
}

В данных случаях обьяснение простое: в этих двух примерах от функции нужно было узнать только тип возвращаемого значения, а чтобы это сделать не нужно вызывать функцию. Достаточно просто посмотреть на её обьявление.

→ Ссылка