#include <string>
int main()
{
std::string s;
s.~string();
return 0;
}
这种写法 g++ 和 clang++ 都报错
s.std::string::~string();
这么写只有 clang++ 报错, g++ 通过编译
在不用 using声明 的情况下,如何写才能让 g++ 和 clang++ 同时通过编译?
版本:
g++ 10.1.0
clang++ 10.0.0
#include <string>
int main()
{
std::string s;
s.~string();
return 0;
}
这种写法 g++ 和 clang++ 都报错
s.std::string::~string();
这么写只有 clang++ 报错, g++ 通过编译
在不用 using声明 的情况下,如何写才能让 g++ 和 clang++ 同时通过编译?
版本:
g++ 10.1.0
clang++ 10.0.0
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答3.3k 阅读
这可能是 clang 的一个 bug。不过可能没有什么人用,于是也没有什么人关注 ...
clang 报的错误是这里不是一个 class_name ,那么给它一个 class_name 就好了。
std::string
只是std::basic_string<char>
的一个typedef
,那么用s.std::string::~basic_string();
就行了。===================
你这个程序有未定义行为,s 会被析构两次。