C++ 使用g+运行clang scan构建+;在linux上
我有以下代码:C++ 使用g+运行clang scan构建+;在linux上,c++,clang++,scan-build,C++,Clang++,Scan Build,我有以下代码: #include <iostream> #include <memory> using namespace std; class A { public: void foo() const; }; void A::foo() const {} std::unique_ptr<A> foo2() { std::unique_ptr<A> pa(new A()); return pa; }
#include <iostream>
#include <memory>
using namespace std;
class A
{
public:
void foo() const;
};
void A::foo() const {}
std::unique_ptr<A> foo2()
{
std::unique_ptr<A> pa(new A());
return pa;
}
void
foo()
{
const A& ra = *foo2();
ra.foo();
}
int
main()
{
foo();
return 0;
}
该程序使用g++编译并运行良好。
我使用的是CentOS、clang3.8和g++4.8.5
错误消息:
error: no type named 'unique_ptr' in namespace 'std'
std::unique_ptr<A> foo2()
~~~~~^
错误:命名空间“std”中没有名为“unique_ptr”的类型
std::unique_ptr foo2()
~~~~~^
您应该使用:
scan-build g++ -std=c++11 unique_ptr.cpp
而不是:
scan-build g++ --std=c++11 unique_ptr.cpp
-std
有效(而--std
无效),因为扫描构建
专门检查-std
标志
在:
scan-build g++ --std=c++11 unique_ptr.cpp
if ($Arg =~ /^-std=/) {
push @CompileOpts,$Arg;
next;
}