Erro: ‘is_same’ não é membro de ‘std’ quando compilar o projeto c ++ no ubuntu?

1

Eu tenho um projeto pequeno e recebo um erro "is_same" não é membro de "std" ao criar. isso é algum código:

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

Qualquer um pode me ajudar. Eu incluí o cabeçalho #include <type_traits> . Obrigado.

    
por nguyenmy 30.06.2015 / 04:58

1 resposta

1

std::is_same é um recurso do C ++ 11. O Ubuntu 12.04 tem o GCC 4.6.3, que tem apenas C ++ 0x incompleto (ainda não C ++ 11) Apoio, suporte. Você pode tentar especificando o padrão:

g++ --std=c++0x ...
    
por muru 30.06.2015 / 05:14