gcc 11.1.0 范围 header 中缺少 `typename`
missing `typename` in gcc 11.1.0 ranges header
我正在使用 clang-12.0.1
和 gcc-11.1.0
中的 libstdc++
。当包含 <ranges>
时,出现以下错误:
[build] /usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../include/c++/11.1.0/ranges:3392:19: error: missing 'typename' prior to dependent type name 'iterator_traits<iterator_t<_Base>>::iterator_category'
[build] using _Cat = iterator_traits<iterator_t<_Base>>::iterator_category;
[build] ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这是库错误吗?
Clang 尚未实现 P0634R3 yet, as per the current posted status。
所以回答你的问题:
Is this a library bug?
不!由于范围库仅在 C++20 中可用,因此 GCC 的实现可以自由使用仅根据该标准版本可用的语法。
我正在使用 clang-12.0.1
和 gcc-11.1.0
中的 libstdc++
。当包含 <ranges>
时,出现以下错误:
[build] /usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../include/c++/11.1.0/ranges:3392:19: error: missing 'typename' prior to dependent type name 'iterator_traits<iterator_t<_Base>>::iterator_category'
[build] using _Cat = iterator_traits<iterator_t<_Base>>::iterator_category;
[build] ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这是库错误吗?
Clang 尚未实现 P0634R3 yet, as per the current posted status。
所以回答你的问题:
Is this a library bug?
不!由于范围库仅在 C++20 中可用,因此 GCC 的实现可以自由使用仅根据该标准版本可用的语法。