2016-05-17 20 views
2

上++グラムでスキャン-構築Iている次のコード:実行中の打ち鳴らすのLinux

#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; 
} 

私が打ち鳴らすのスキャン・ビルドを使用しようとしています:このプログラムはコンパイルし、グラムで正常に動作

scan-build g++ --std=c++11 unique_ptr.cpp 

を++ 。 CentOSとclang3.8、g ++ 4.8.5を使用しています。

エラーメッセージ:

error: no type named 'unique_ptr' in namespace 'std' 
std::unique_ptr<A> foo2() 
~~~~~^ 

答えて

3

は、あなたが使用する必要があります。代わりの

scan-build g++ -std=c++11 unique_ptr.cpp 

scan-build g++ --std=c++11 unique_ptr.cpp 

-std作品のために特別に理由scan-buildチェック(--stdはそうではない)を-stdフラグ。 clang/tools/scan-build/libexec/ccc-analyzer

if ($Arg =~ /^-std=/) { 
    push @CompileOpts,$Arg; 
    next; 
} 
関連する問題