web-dev-qa-db-ja.com

エラー:ubuntuでC ++プロジェクトをビルドする際、「is_same」は「std」のメンバーではありませんか?

小さなプロジェクトがあり、エラーが発生しました「is_same」は「std」のメンバーではありませんビルド時に。これはいくつかのコードです:

template <class T>
T* UcmExportFactory::Unwrap (T* ptr)
{
    Utils::IUcmWrapper* wrapper = dynamic_cast<Utils::IUcmWrapper*> (ptr);

    // If the requested Ucm inteface is derived from an another (such as IUcmV from IUcmUnionValue), specify that whether we want the base class pointer or not.
    bool interfaceForAbstractBase = (std::is_same<IUcmUnionValue, T>::value || std::is_same<IUcmDiagCodedType, T>::value);
    return (wrapper) ? boost::any_cast<T*> ( wrapper->GetWrappedObject (interfaceForAbstractBase) ) : ptr;
}

誰でも私を助けることができます。ヘッダー#include <type_traits>を含めました。ありがとう。

2
nguyenmy

std::is_sameはC++ 11の機能です。 Ubuntu 12.04にはGCC 4.6.3があり、不完全な C++ 0x(まだC++ 11ではありません) サポートしかありません。標準を指定して試すことができます。

g++ --std=c++0x ...
1
muru