相关疑难解决方法(0)

我可以使用标准库中定义的函数的地址吗?

考虑以下代码:

#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";
}
Run Code Online (Sandbox Code Playgroud)

在此,对的两个调用std::invoke已标记为将来参考。预期的输出是:

a
Run Code Online (Sandbox Code Playgroud)

在C ++ 20中可以保证预期的输出吗?

(注意:有两个函数tolower,一个称为in <cctype>,另一个称为in <locale>。引入了显式强制转换以选择所需的重载。)

c++ c++-standard-library language-lawyer unspecified-behavior c++20

27
推荐指数
1
解决办法
544
查看次数