貌似跟g++版本有关
我用刚编译出来的x86_64-linux-musl-g++ 12.2.0编译没问题
ubuntu 22.04自带的g++ 11.3.0也OK。
但是用UOS自带的g++ 8.3.0就有问题,有很长的错误信息说模板推导失败。
ubuntu 18.04里的g++ 7.5.0也是同样失败。
"42.3"是一个double,向long double默认转换应该是允许的。
happy@happy:~/Downloads$ /opt/cross/bin/x86_64-linux-musl-g++ --std=c++17 1.cpp
happy@happy:~/Downloads$ /opt/cross/bin/x86_64-linux-musl-g++ --std=c++20 1.cpp
happy@happy:~/Downloads$ cat 1.cpp
#include <variant>
int main() {
//std::variant<int, float> v4{42.3};
std::variant<int, long double> v4{42.3};
//std::variant<int, double> v5{42.3f};
return 0;
}
【 在 mvtec 的大作中提到: 】
: msvc的long double和double是一个类型
: gcc和clang的long double 是16 bytes
: 我没明白为啥long double不能match 42.3
--
修改:z16166 FROM 222.130.137.*
FROM 222.130.137.*