@@ -4612,57 +4612,56 @@ namespace chrono {
4612
4612
minutes* _Offset;
4613
4613
};
4614
4614
4615
- template <class _CharT , class _Traits , class _Parsable , class... _Rest>
4616
- using _Has_from_stream =
4617
- decltype(static_cast<void>(from_stream(_STD declval< basic_istream<_CharT, _Traits>&>(),
4618
- _STD declval<const _CharT*>(), _STD declval<_Parsable&>() , _STD declval <_Rest>()...)),
4619
- 0); // intentional ADL
4615
+ template <class _Parsable , class _CharT , class _Traits , class... _Rest>
4616
+ concept _Can_from_stream = requires(
4617
+ basic_istream<_CharT, _Traits>& __istr, const _CharT* __s, _Parsable& __parsed, _Rest&&... __rest_args) {
4618
+ from_stream(__istr, +__s, __parsed , _STD forward <_Rest>(__rest_args )...); // intentional ADL
4619
+ };
4620
4620
4621
- _EXPORT_STD template <class _CharT, class _Parsable, _Has_from_stream <_CharT, char_traits<_CharT>, _Parsable> = 0 >
4621
+ _EXPORT_STD template <class _CharT, _Can_from_stream <_CharT, char_traits<_CharT>> _Parsable >
4622
4622
_NODISCARD auto parse(const _CharT* _Fmt, _Parsable& _Tp) {
4623
4623
return _Time_parse_iomanip_c_str<_CharT, char_traits<_CharT>, allocator<_CharT>, _Parsable>{_Fmt, _Tp};
4624
4624
}
4625
4625
4626
- _EXPORT_STD template <class _CharT, class _Traits, class _Alloc, class _Parsable,
4627
- _Has_from_stream<_CharT, _Traits, _Parsable> = 0>
4626
+ _EXPORT_STD template <class _CharT, class _Traits, class _Alloc, _Can_from_stream<_CharT, _Traits> _Parsable>
4628
4627
_NODISCARD auto parse(const basic_string<_CharT, _Traits, _Alloc>& _Fmt, _Parsable& _Tp) {
4629
4628
return _Time_parse_iomanip{_Fmt, _Tp};
4630
4629
}
4631
4630
4632
- _EXPORT_STD template <class _CharT, class _Traits, class _Alloc, class _Parsable,
4633
- _Has_from_stream <_CharT, _Traits, _Parsable, basic_string<_CharT, _Traits, _Alloc>*> = 0 >
4631
+ _EXPORT_STD template <class _CharT, class _Traits, class _Alloc,
4632
+ _Can_from_stream <_CharT, _Traits, basic_string<_CharT, _Traits, _Alloc>*> _Parsable >
4634
4633
_NODISCARD auto parse(const _CharT* _Fmt, _Parsable& _Tp, basic_string<_CharT, _Traits, _Alloc>& _Abbrev) {
4635
4634
return _Time_parse_iomanip_c_str{_Fmt, _Tp, _STD addressof(_Abbrev)};
4636
4635
}
4637
4636
4638
- _EXPORT_STD template <class _CharT, class _Traits, class _Alloc, class _Parsable,
4639
- _Has_from_stream <_CharT, _Traits, _Parsable, basic_string<_CharT, _Traits, _Alloc>*> = 0 >
4637
+ _EXPORT_STD template <class _CharT, class _Traits, class _Alloc,
4638
+ _Can_from_stream <_CharT, _Traits, basic_string<_CharT, _Traits, _Alloc>> _Parsable >
4640
4639
_NODISCARD auto parse(const basic_string<_CharT, _Traits, _Alloc>& _Fmt, _Parsable& _Tp,
4641
4640
basic_string<_CharT, _Traits, _Alloc>& _Abbrev) {
4642
4641
return _Time_parse_iomanip{_Fmt, _Tp, _STD addressof(_Abbrev)};
4643
4642
}
4644
4643
4645
- _EXPORT_STD template <class _CharT, class _Parsable,
4646
- _Has_from_stream <_CharT, char_traits<_CharT>, _Parsable, basic_string<_CharT>*, minutes*> = 0 >
4644
+ _EXPORT_STD template <class _CharT,
4645
+ _Can_from_stream <_CharT, char_traits<_CharT>, basic_string<_CharT>*, minutes*> _Parsable >
4647
4646
_NODISCARD auto parse(const _CharT* _Fmt, _Parsable& _Tp, minutes& _Offset) {
4648
4647
return _Time_parse_iomanip_c_str{_Fmt, _Tp, static_cast<basic_string<_CharT>*>(nullptr), &_Offset};
4649
4648
}
4650
4649
4651
- _EXPORT_STD template <class _CharT, class _Traits, class _Alloc, class _Parsable,
4652
- _Has_from_stream <_CharT, _Traits, _Parsable, basic_string<_CharT, _Traits, _Alloc>*, minutes*> = 0 >
4650
+ _EXPORT_STD template <class _CharT, class _Traits, class _Alloc,
4651
+ _Can_from_stream <_CharT, _Traits, basic_string<_CharT, _Traits, _Alloc>*, minutes*> _Parsable >
4653
4652
_NODISCARD auto parse(const basic_string<_CharT, _Traits, _Alloc>& _Fmt, _Parsable& _Tp, minutes& _Offset) {
4654
4653
return _Time_parse_iomanip{_Fmt, _Tp, static_cast<basic_string<_CharT, _Traits, _Alloc>*>(nullptr), &_Offset};
4655
4654
}
4656
4655
4657
- _EXPORT_STD template <class _CharT, class _Traits, class _Alloc, class _Parsable,
4658
- _Has_from_stream <_CharT, _Traits, _Parsable, basic_string<_CharT, _Traits, _Alloc>*, minutes*> = 0 >
4656
+ _EXPORT_STD template <class _CharT, class _Traits, class _Alloc,
4657
+ _Can_from_stream <_CharT, _Traits, basic_string<_CharT, _Traits, _Alloc>*, minutes*> _Parsable >
4659
4658
_NODISCARD auto parse(
4660
4659
const _CharT* _Fmt, _Parsable& _Tp, basic_string<_CharT, _Traits, _Alloc>& _Abbrev, minutes& _Offset) {
4661
4660
return _Time_parse_iomanip_c_str{_Fmt, _Tp, _STD addressof(_Abbrev), &_Offset};
4662
4661
}
4663
4662
4664
- _EXPORT_STD template <class _CharT, class _Traits, class _Alloc, class _Parsable,
4665
- _Has_from_stream <_CharT, _Traits, _Parsable, basic_string<_CharT, _Traits, _Alloc>*, minutes*> = 0 >
4663
+ _EXPORT_STD template <class _CharT, class _Traits, class _Alloc,
4664
+ _Can_from_stream <_CharT, _Traits, basic_string<_CharT, _Traits, _Alloc>*, minutes*> _Parsable >
4666
4665
_NODISCARD auto parse(const basic_string<_CharT, _Traits, _Alloc>& _Fmt, _Parsable& _Tp,
4667
4666
basic_string<_CharT, _Traits, _Alloc>& _Abbrev, minutes& _Offset) {
4668
4667
return _Time_parse_iomanip{_Fmt, _Tp, _STD addressof(_Abbrev), &_Offset};
0 commit comments