The standard shows this default template argument in the <ranges>
synopsis, but it was missing in libstdc++.
libstdc++-v3/ChangeLog:
* include/std/ranges (basic_istream_view): Add default template
argument.
* testsuite/std/ranges/istream_view.cc: Check it.
= requires(basic_istream<_CharT, _Traits>& is, _Val& t) { is >> t; };
} // namespace __detail
- template<movable _Val, typename _CharT, typename _Traits>
+ template<movable _Val, typename _CharT,
+ typename _Traits = char_traits<_CharT>>
requires default_initializable<_Val>
&& __detail::__stream_extractable<_Val, _CharT, _Traits>
class basic_istream_view
;
}
+void
+test06()
+{
+ // Default template argument
+ using V = std::ranges::basic_istream_view<int, char>;
+ using W = std::ranges::basic_istream_view<int, char, std::char_traits<char>>;
+ static_assert( std::is_same_v<V, W> );
+}
+
int
main()
{
test03();
test04();
test05();
+ test06();
}