web-dev-qa-db-fra.com

Erreur: ‘is_same’ n’est pas membre de ‘std’ lors de la construction du projet c ++ dans Ubuntu?

J’ai un petit projet et j’obtiens une erreur ‘is_same’ n’est pas membre de ‘std’ lors de la construction. c'est du code:

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

Est-ce que quelqu'un peut m'aider. J'ai inclus l'en-tête #include <type_traits>. Merci.

2
nguyenmy

std::is_same est une fonctionnalité C++ 11. Ubuntu 12.04 a GCC 4.6.3, qui n’a qu'un support incomplet C++ 0x (pas encore C++ 11) . Vous pouvez essayer en spécifiant le standard:

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