2

次のコードがあります。

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

私はclangのスキャンビルドを使用しようとしています:

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

このプログラムは、g++ で正常にコンパイルおよび実行されます。CentOS と clang3.8 と g++4.8.5 を使用しています。

エラーメッセージ:

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

1 に答える 1

4

以下を使用する必要があります。

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

それ以外の:

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

-std特にフラグをチェックするため、動作します(動作し--stdません) 。scan-build-std

clang/tools/scan-build/libexec/ccc-analyzer

if ($Arg =~ /^-std=/) {
  push @CompileOpts,$Arg;
  next;
}
于 2016-05-18T01:42:34.797 に答える