Рассмотрим следующий код:
#include <cctype>
#include <functional>
#include <iostream>
int main()
{
std::invoke(std::boolalpha, std::cout); // #1
using ctype_func = int(*)(int);
char c = std::invoke(static_cast<ctype_func>(std::tolower), 'A'); // #2
std::cout << c << "\n";
}
Здесь два вызова std::invoke
помечены для дальнейшего использования. Ожидаемый результат:
a
Ожидаемый результат гарантирован в С++ 20?
(Примечание: есть две функции, называемые tolower
- одна в <cctype>
а другая в <locale>
. Явное приведение приведено для выбора желаемой перегрузки.)