gpt4 book ai didi

c++ - libstdc++ 中允许不兼容的函数类型?

转载 作者:行者123 更新时间:2023-11-28 06:13:21 24 4
gpt4 key购买 nike

<分区>

我正在编译一个简单的(也可能是错误的)C++ 文件:

// file test_function.cpp
#include <functional>

void foo()
{
void* (*func)() = nullptr;
std::function<void()> func_(func);
}

我觉得func_的类型应该是std::function<void*()> .正如预期的那样,带有 libc++ 的 clang++ 给出了一个错误:

$ clang++ -std=c++14 -c -stdlib=libc++ test_function.cpp
test_function.cpp:6:27: error: no matching constructor for initialization of 'std::function<void ()>'
std::function<void()> func_(func);
^ ~~~~

但是,带有 libstdc++ 的 g++ 和 clang++ 没有给出错误:

$ clang++ -std=c++14 -c -stdlib=libstdc++ test_function.cpp
$ g++ -std=c++14 -c test_function.cpp

情况正常吗? C++标准中有关于函数类型转换的描述吗?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com