Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

clang++ 10.0 fails with libstdc++ from gcc 10-20200216 #44300

Closed
berolinux opened this issue Feb 18, 2020 · 3 comments
Closed

clang++ 10.0 fails with libstdc++ from gcc 10-20200216 #44300

berolinux opened this issue Feb 18, 2020 · 3 comments
Labels
bugzilla Issues migrated from bugzilla

Comments

@berolinux
Copy link

Bugzilla Link 44955
Resolution FIXED
Resolved on Feb 20, 2020 06:57
Version 10.0
OS Linux
Blocks #43900
CC @efriedma-quic,@zmodem,@slacka,@zygoloid

Extended Description

Not 100% sure whether this is a libstdc++ bug or a clang bug. (Also filed a bug report against libstdc++ at https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93818).

Using libstdc++ from gcc 10-20200216 breaks using it with clang 10 in C++20 mode.

/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:1329:17: error: missing 'typename' prior to dependent type name 'iterator_traits<iterator_t<_Vp> >::iterator_category'
using _Cat = iterator_traits<iterator_t<_Vp>>::iterator_category;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:1512:47: error: ambiguous deduction for template arguments of '_RangeAdaptor'
inline constexpr __adaptor::_RangeAdaptor filter
^
/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:1073:2: note: candidate function [with _Callable = std::ranges::views::(lambda at /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:1513:9)]
_RangeAdaptor(const _Callable& = {})
^
/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:1078:2: note: candidate function [with _Callable = std::ranges::views::(lambda at /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:1513:9)]
_RangeAdaptor(_Callable __callable)
^
/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:1552:19: error: missing 'typename' prior to dependent type name 'iterator_traits<iterator_t<_Base> >::iterator_category'
using _Cat = iterator_traits<iterator_t<_Base>>::iterator_category;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:1853:47: error: ambiguous deduction for template arguments of '_RangeAdaptor'
inline constexpr __adaptor::_RangeAdaptor transform
^
/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:1073:2: note: candidate function [with _Callable = std::ranges::views::(lambda at /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:1854:9)]
_RangeAdaptor(const _Callable& = {})
^
/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:1078:2: note: candidate function [with _Callable = std::ranges::views::(lambda at /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:1854:9)]
_RangeAdaptor(_Callable __callable)
^
/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:2000:47: error: ambiguous deduction for template arguments of '_RangeAdaptor'
inline constexpr __adaptor::_RangeAdaptor take
^
/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:1073:2: note: candidate function [with _Callable = std::ranges::views::(lambda at /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:2001:9)]
_RangeAdaptor(const _Callable& = {})
^
/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:1078:2: note: candidate function [with _Callable = std::ranges::views::(lambda at /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:2001:9)]
_RangeAdaptor(_Callable __callable)
^
/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:2092:47: error: ambiguous deduction for template arguments of '_RangeAdaptor'
inline constexpr __adaptor::_RangeAdaptor take_while
^
/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:1073:2: note: candidate function [with _Callable = std::ranges::views::(lambda at /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:2093:9)]
_RangeAdaptor(const _Callable& = {})
^
/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:1078:2: note: candidate function [with _Callable = std::ranges::views::(lambda at /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:2093:9)]
_RangeAdaptor(_Callable __callable)
^
/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:2169:47: error: ambiguous deduction for template arguments of '_RangeAdaptor'
inline constexpr __adaptor::_RangeAdaptor drop
^
/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:1073:2: note: candidate function [with _Callable = std::ranges::views::(lambda at /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:2170:9)]
_RangeAdaptor(const _Callable& = {})
^
/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:1078:2: note: candidate function [with _Callable = std::ranges::views::(lambda at /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:2170:9)]
_RangeAdaptor(_Callable __callable)
^
/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:2225:47: error: ambiguous deduction for template arguments of '_RangeAdaptor'
inline constexpr __adaptor::_RangeAdaptor drop_while
^
/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:1073:2: note: candidate function [with _Callable = std::ranges::views::(lambda at /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:2226:9)]
_RangeAdaptor(const _Callable& = {})
^
/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:1078:2: note: candidate function [with _Callable = std::ranges::views::(lambda at /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:2226:9)]
_RangeAdaptor(_Callable __callable)
^
/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:2297:10: error: missing 'typename' prior to dependent type name 'iterator_traits<iterator_t<_Base> >::iterator_category'
= iterator_traits<iterator_t<_Base>>::iterator_category;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:2299:10: error: missing 'typename' prior to dependent type name 'iterator_traits<iterator_t<range_reference_t<_Base> > >::iterator_category'
= iterator_traits<iterator_t<range_reference_t<_Base>>>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:2768:19: error: missing 'typename' prior to dependent type name 'iterator_traits<iterator_t<_Base> >::iterator_category'
using _Cat = iterator_traits<iterator_t<_Base>>::iterator_category;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:2942:47: error: ambiguous deduction for template arguments of '_RangeAdaptor'
inline constexpr __adaptor::_RangeAdaptor split
^
/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:1073:2: note: candidate function [with _Callable = std::ranges::views::(lambda at /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:2943:9)]
_RangeAdaptor(const _Callable& = {})
^
/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:1078:2: note: candidate function [with _Callable = std::ranges::views::(lambda at /usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/10.0.0/../../../../include/c++/10.0.0/ranges:2943:9)]
_RangeAdaptor(_Callable __callable)
^
12 errors generated.

libstdc++ from gcc 10-20200209 works perfectly with both gcc and clang.

@zmodem
Copy link
Collaborator

zmodem commented Feb 19, 2020

+Richard maybe?

@zygoloid
Copy link
Mannequin

zygoloid mannequin commented Feb 19, 2020

libstdc++ was relying on a C++20 feature we don't implement yet, and there's some disagreement between clang and gcc on a CTAD deduction too (but I don't think we know who is right yet). Both now fixed / worked around in libstdc++.

@zmodem
Copy link
Collaborator

zmodem commented Feb 20, 2020

libstdc++ was relying on a C++20 feature we don't implement yet, and there's
some disagreement between clang and gcc on a CTAD deduction too (but I don't
think we know who is right yet). Both now fixed / worked around in libstdc++.

Okay, sounds like this can be closed then. Thanks!

@llvmbot llvmbot transferred this issue from llvm/llvm-bugzilla-archive Dec 10, 2021
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bugzilla Issues migrated from bugzilla
Projects
None yet
Development

No branches or pull requests

2 participants