Ошибка: is_same не является членом std при сборке проекта C++ в Ubuntu?
У меня небольшой проект, и я получаю сообщение об ошибке "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>
, Благодарю.
1 ответ
std::is_same
это особенность C++11 Ubuntu 12.04 имеет GCC 4.6.3, которая имеет только неполную поддержку C++0x (пока не C++11). Вы можете попробовать, указав стандарт:
g++ --std=c++0x ...
Просто напоминание всем, кто попадает на эту страницу, поскольку ОП заявил, что он сделал это:
Вы также получите эту ошибку, если не включите type_traits
заголовок, поэтому не забывайте, что:
#include <type_traits>