gpt4 book ai didi

gcc - 为什么clang++3.5编译不了这段代码,而clang++3.6可以编译呢?

转载 作者:行者123 更新时间:2023-12-04 14:27:17 25 4
gpt4 key购买 nike

此代码片段无法用 clang++3.5 编译,但可以用 clang++3.6 编译。然后我搜索 https://llvm.org/bugs/ ,似乎找不到任何关于此的错误。那么为什么这段代码无法在 clang++3.5 中编译呢? g++ 没有这个问题。提前谢谢你。

void F() {}

template <typename T>
class Option {
public:

Option(const T &) {}

Option(T &&) {}

template <typename U>
Option(const U &) {}

};

class Fork {
public:

Fork(const Option<void (*)(void)>&) {}

};


int main() {
Fork fork(F);
}

clang++3.5编译报错

test.cpp:25:13: error: conversion from 'void ()' to 'const Option<void (*)()>' is ambiguous
Fork fork(F);
^
test.cpp:7:3: note: candidate constructor
Option(const T &) {}
^
test.cpp:9:3: note: candidate constructor
Option(T &&) {}
^
test.cpp:12:3: note: candidate constructor [with U = void ()]
Option(const U &) {}
^
1 error generated.

我的clang++版本

clang++ --version
Apple LLVM version 6.0 (clang-600.0.54) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin14.1.0
Thread model: posix

最佳答案

很可能是 clang++ 3.5 编译器无法识别 Option 中的任何构造函数匹配类型 void () .这可能是由 const Option<void (*)()> 引起的模棱两可。

您可能会发现有帮助的另一个站点: LLVM Open Source Lib

PS:我想将此作为评论发布,但我还没有达到 50 个代表。

关于gcc - 为什么clang++3.5编译不了这段代码,而clang++3.6可以编译呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31274765/

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