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.
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 ...