#3366 closed defect (fixed)
GCC < 4.8.0 does not support emplace* in associative containers
Reported by: | leper | Owned by: | leper |
---|---|---|---|
Priority: | Release Blocker | Milestone: | Alpha 19 |
Component: | Core engine | Keywords: | |
Cc: | Patch: |
Description
The documentation for 4.6.* claims to support it while it does not. (See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44436) 4.7 has the documentation updated to indicate the missing support.
This breaks the build on Ubuntu 12.04 (and since the default gcc for 14.04 is 4.7 likely also for that). Build log: https://launchpadlibrarian.net/214230683/buildlog_ubuntu-precise-amd64.0ad_0.0.18%2Br16914-0ubuntu1~12.04~wfg0_BUILDING.txt.gz.
CppSupport should be updated to include this information.
Change History (4)
comment:1 by , 9 years ago
comment:2 by , 9 years ago
Judging from http://llvm.org/releases/2.8/docs/ReleaseNotes.html (libc++ header) it should be supported in Clang 3.1, which was released about 1.5 years later. Sadly http://libcxx.llvm.org/index.html only has pages for C++1x (C++14) and C++1y, but I guess that only implies C++11 being fully supported.
Thanks for updating the page already!
comment:4 by , 9 years ago
Above revisions should be all that's needed to fix the compilation on 4.6. I also reverted some uses of emplace on boost map containers so that there is not confusion when looking at the code.
I updated the CppSupport page, but I don't know the status of Clang 3.1 support in this case. If anyone finds that info, they can update the page :)