У файлі включеному з /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.3/include/g++-v4/unordered_map:35, з /var/tmp/portage/dev-util/kdevelop-4.0.2/work/kdevelop-4.0.2/languages/cpp/parser/parser.h:41, з /var/tmp/portage/dev-util/kdevelop-4.0.2/work/kdevelop-4.0.2/languages/cpp/parser/parser.cpp:23: /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.3/include/g++-v4/c++0x_warning.h:31:2: error: #error This file requires compiler and library support for the upcoming ISO C++ standard, C++0x. This support is currently experimental, and must be enabled with the -std=c++0x or -std=gnu++0x compiler options. Reproducible: Always Steps to Reproduce: 1. emerge kdevelop
Created attachment 249623 [details] emerge --info
Hello, can you please provide an full build.log? Thanks, Michael
Created attachment 249731 [details] build.log
My build log (same gcc and same glibc): -- Looking for include files HAVE_VALGRIND_H - found -- Found shared-mime-info version: 0.71 -- Enabling c++0x support for unordered map It seems kdevelop assumes every >=gcc-4.3 provides support for C++0x. Yours for some reason does not provide those features - do you happen to know why would it be the case? #elif defined GXX_LT_4_3 #include <ext/hash_map> using namespace __gnu_cxx; #else // CXX-0 #include <unordered_map> <------ it bails here in your case template <class Key, class Data> class hash_map : public std::unordered_map<Key, Data> { }; #endif
macro_ensure_version("4.3.0" "${_gcc_version}" GCC_IS_NEWER_THAN_4_3) if (GCC_IS_NEWER_THAN_4_3) message(STATUS "Enabling c++0x support for unordered map") add_definitions( -std=c++0x ) # For unordered_map else(GCC_IS_NEWER_THAN_4_3) add_definitions( -DGXX_LT_4_3 ) endif (GCC_IS_NEWER_THAN_4_3) endif(CMAKE_COMPILER_IS_GNUCXX) So GXX_LT_4_3 is passed correctly to preprocessor. I don't know why it doesn't work, anyway below there's full conditional block. It will use unordered map on any non-msvc compiler that is not '<=gcc-4.3'. I won't say it's perfectly safe condition but should work in your case nevertheless. #ifdef Q_CC_MSVC #include <hash_map> using namespace stdext; #elif defined GXX_LT_4_3 #include <ext/hash_map> using namespace __gnu_cxx; #else // CXX-0 #include <unordered_map> template <class Key, class Data> class hash_map : public std::unordered_map<Key, Data> { }; #endif
Work for me as like this bug http://bugs.gentoo.org/show_bug.cgi?id=339798