[cfe-dev] clang fails to compile gcc 4.8's <unordered_map>
Nathan Ridge
zeratul976 at hotmail.com
Wed May 30 20:59:59 PDT 2012
Hello,
Clang fails to compile GCC 4.8.0's <unordered_map> with the following errors:
gcc-4.8/include/c++/4.8.0/bits/hashtable_policy.h:806:8: error: expected unqualified-id
using __is_convertible = std::is_convertible<_Pair, value_type>;
^
gcc-4.8/include/c++/4.8.0/bits/hashtable_policy.h:809:49: error: expected '('
using _IFconv = std::enable_if<__is_convertible<_Pair>::value>;
^
gcc-4.8/include/c++/4.8.0/bits/hashtable_policy.h:809:50: error: '_Pair' does not refer to a value
using _IFconv = std::enable_if<__is_convertible<_Pair>::value>;
^
gcc-4.8/include/c++/4.8.0/bits/hashtable_policy.h:808:25: note: declared here
template<typename _Pair>
^
gcc-4.8/include/c++/4.8.0/bits/hashtable_policy.h:809:58: error: expected ';' after alias declaration
using _IFconv = std::enable_if<__is_convertible<_Pair>::value>;
^
gcc-4.8/include/c++/4.8.0/bits/hashtable_policy.h:812:28: error: expected a qualified name after
'typename'
using _IFconvp = typename _IFconv<_Pair>::type;
^
gcc-4.8/include/c++/4.8.0/bits/hashtable_policy.h:812:27: error: expected ';' after alias declaration
using _IFconvp = typename _IFconv<_Pair>::type;
^
gcc-4.8/include/c++/4.8.0/bits/hashtable_policy.h:814:43: error: unknown type name '_IFconvp'
template<typename _Pair, typename = _IFconvp<_Pair>>
^
gcc-4.8/include/c++/4.8.0/bits/hashtable_policy.h:814:51: error: expected ',' or '>' in
template-parameter-list
template<typename _Pair, typename = _IFconvp<_Pair>>
^
gcc-4.8/include/c++/4.8.0/bits/hashtable_policy.h:814:58: error: expected member name or ';' after
declaration specifiers
template<typename _Pair, typename = _IFconvp<_Pair>>
^
The problem is that GCC uses the following alias template as class scope:
template<typename _Pair>
using __is_convertible = std::is_convertible<_Pair, value_type>;
but __is_convertible, I am guessing, is a compiler intrinsic in clang.
Is either gcc or clang doing something wrong, or is it just a clash of implementations?
What can be done to resolve this?
Thanks,
Nate
More information about the cfe-dev
mailing list