@@ -574,7 +574,7 @@ _EXPORT_STD template <class _CharT>
574
574
class basic_format_parse_context {
575
575
public:
576
576
using char_type = _CharT;
577
- using const_iterator = typename basic_string_view<_CharT>::const_iterator;
577
+ using const_iterator = basic_string_view<_CharT>::const_iterator;
578
578
using iterator = const_iterator;
579
579
580
580
constexpr explicit basic_format_parse_context(
@@ -648,7 +648,7 @@ private:
648
648
_EXPORT_STD using format_parse_context = basic_format_parse_context<char>;
649
649
_EXPORT_STD using wformat_parse_context = basic_format_parse_context<wchar_t>;
650
650
651
- template <class _Ty, class _Context, class _Formatter = typename _Context::template formatter_type<remove_const_t<_Ty>>>
651
+ template <class _Ty, class _Context, class _Formatter = _Context::template formatter_type<remove_const_t<_Ty>>>
652
652
concept _Formattable_with = semiregular<_Formatter>
653
653
&& requires(_Formatter& __f, const _Formatter& __cf, _Ty&& __t, _Context __fc,
654
654
basic_format_parse_context<typename _Context::char_type> __pc) {
@@ -667,7 +667,7 @@ inline constexpr bool _Is_basic_string_like_for<basic_string_view<_CharT, _Trait
667
667
668
668
template <class _Context>
669
669
struct _Format_arg_traits {
670
- using _Char_type = typename _Context::char_type;
670
+ using _Char_type = _Context::char_type;
671
671
672
672
// Function template _Type_eraser mirrors the type dispatching mechanism in the construction of basic_format_arg
673
673
// (N4950 [format.arg]). They determine the mapping from "raw" to "erased" argument type for _Format_arg_store.
@@ -692,7 +692,7 @@ _FMT_P2286_END
692
692
_EXPORT_STD template <class _Context>
693
693
class basic_format_arg {
694
694
public:
695
- using _CharType = typename _Context::char_type;
695
+ using _CharType = _Context::char_type;
696
696
697
697
class handle {
698
698
private:
@@ -734,7 +734,7 @@ public:
734
734
// basic_format_arg (N4950 [format.arg]).
735
735
template <_Formattable_with<_Context> _Ty>
736
736
static basic_format_arg _Make_from(_Ty& _Val) noexcept {
737
- using _Erased_type = typename _Format_arg_traits<_Context>::template _Storage_type<_Ty>;
737
+ using _Erased_type = _Format_arg_traits<_Context>::template _Storage_type<_Ty>;
738
738
#if !_HAS_CXX23
739
739
if constexpr (is_same_v<_Erased_type, basic_string_view<_CharType>>) {
740
740
return basic_format_arg(_Erased_type{_Val.data(), _Val.size()});
@@ -1639,7 +1639,7 @@ _NODISCARD constexpr int _Get_dynamic_specs(const _FormatArg _Arg) {
1639
1639
template <class _ParseContext, class _Context>
1640
1640
class _Specs_handler : public _Specs_setter<typename _Context::char_type> {
1641
1641
public:
1642
- using _CharT = typename _Context::char_type;
1642
+ using _CharT = _Context::char_type;
1643
1643
1644
1644
constexpr _Specs_handler(_Basic_format_specs<_CharT>& _Specs_, _ParseContext& _Parse_ctx_, _Context& _Ctx_)
1645
1645
: _Specs_setter<_CharT>(_Specs_), _Parse_ctx(_Parse_ctx_), _Ctx(_Ctx_) {}
@@ -1671,7 +1671,7 @@ private:
1671
1671
template <class _ParseContext>
1672
1672
class _Dynamic_specs_handler : public _Specs_setter<typename _ParseContext::char_type> {
1673
1673
public:
1674
- using _CharT = typename _ParseContext::char_type;
1674
+ using _CharT = _ParseContext::char_type;
1675
1675
1676
1676
constexpr _Dynamic_specs_handler(_Dynamic_format_specs<_CharT>& _Specs_, _ParseContext& _Parse_ctx_)
1677
1677
: _Specs_setter<_CharT>(_Specs_), _Dynamic_specs(_Specs_), _Parse_ctx(_Parse_ctx_) {}
@@ -1942,7 +1942,7 @@ struct _Format_arg_index {
1942
1942
template <class _Context, class... _Args>
1943
1943
class _Format_arg_store {
1944
1944
private:
1945
- using _CharType = typename _Context::char_type;
1945
+ using _CharType = _Context::char_type;
1946
1946
using _Traits = _Format_arg_traits<_Context>;
1947
1947
1948
1948
friend basic_format_args<_Context>;
@@ -1977,7 +1977,7 @@ private:
1977
1977
1978
1978
template <class _Ty>
1979
1979
void _Store(const size_t _Arg_index, _Ty&& _Val) noexcept {
1980
- using _Erased_type = typename _Traits::template _Storage_type<_Ty>;
1980
+ using _Erased_type = _Traits::template _Storage_type<_Ty>;
1981
1981
1982
1982
_Basic_format_arg_type _Arg_type;
1983
1983
if constexpr (is_same_v<_Erased_type, bool>) {
@@ -2047,7 +2047,7 @@ public:
2047
2047
return basic_format_arg<_Context>{};
2048
2048
}
2049
2049
2050
- using _CharType = typename _Context::char_type;
2050
+ using _CharType = _Context::char_type;
2051
2051
// The explanatory comment in _Format_arg_store explains how the following works.
2052
2052
const auto _Packed_index = _Index_array[_Index];
2053
2053
const auto _Arg_storage =
@@ -2089,7 +2089,7 @@ public:
2089
2089
}
2090
2090
2091
2091
_NODISCARD size_t _Estimate_required_capacity() const noexcept {
2092
- using _CharType = typename _Context::char_type;
2092
+ using _CharType = _Context::char_type;
2093
2093
size_t _Result = 0;
2094
2094
2095
2095
for (size_t _Idx = 0; _Idx < _Num_args; ++_Idx) {
@@ -2320,7 +2320,7 @@ private:
2320
2320
const auto _End = _Data + this->_Limit(_Size);
2321
2321
2322
2322
// extracts back_insert_iterator's underlying container type, or void if not.
2323
- using _Container = typename _Back_insert_iterator_container_type<_OutputIt>::type;
2323
+ using _Container = _Back_insert_iterator_container_type<_OutputIt>::type;
2324
2324
if constexpr (_Is_specialization_v<_Container, basic_string> || _Is_specialization_v<_Container, vector>) {
2325
2325
auto& _Cont = *_Back_insert_iterator_container_access<_Container>{_Output}.container;
2326
2326
_Cont.insert(_Cont.end(), _Data, _End);
@@ -3419,7 +3419,7 @@ struct _Default_arg_formatter {
3419
3419
return _Fmt_write<_CharT>(_STD move(_Out), _Val);
3420
3420
}
3421
3421
3422
- _OutputIt operator()(typename basic_format_arg<_Context>::handle _Handle) && {
3422
+ _OutputIt operator()(basic_format_arg<_Context>::handle _Handle) && {
3423
3423
basic_format_parse_context<_CharT> _Parse_ctx({});
3424
3424
basic_format_context<_OutputIt, _CharT> _Format_ctx(_STD move(_Out), _Args, _Loc);
3425
3425
_Handle.format(_Parse_ctx, _Format_ctx);
@@ -3435,7 +3435,7 @@ struct _Arg_formatter {
3435
3435
_Context* _Ctx = nullptr;
3436
3436
_Basic_format_specs<_CharT>* _Specs = nullptr;
3437
3437
3438
- _OutputIt operator()(typename basic_format_arg<_Context>::handle) {
3438
+ _OutputIt operator()(basic_format_arg<_Context>::handle) {
3439
3439
_STL_VERIFY(false, "The custom handler should be structurally unreachable for _Arg_formatter");
3440
3440
_STL_INTERNAL_CHECK(_Ctx);
3441
3441
return _Ctx->out();
@@ -3454,11 +3454,11 @@ struct _Arg_formatter {
3454
3454
// care about avoiding code bloat for code that never runs at runtime, and we can't form
3455
3455
// the erased basic_format_args structure at compile time.
3456
3456
template <class _Ty, class _ParseContext>
3457
- consteval typename _ParseContext::iterator _Compile_time_parse_format_specs(_ParseContext& _Pc) {
3458
- using _CharT = typename _ParseContext::char_type;
3457
+ consteval _ParseContext::iterator _Compile_time_parse_format_specs(_ParseContext& _Pc) {
3458
+ using _CharT = _ParseContext::char_type;
3459
3459
using _Context = basic_format_context<back_insert_iterator<_Fmt_buffer<_CharT>>, _CharT>;
3460
3460
using _ArgTraits = _Format_arg_traits<_Context>;
3461
- using _FormattedTypeMapping = typename _ArgTraits::template _Storage_type<_Ty>;
3461
+ using _FormattedTypeMapping = _ArgTraits::template _Storage_type<_Ty>;
3462
3462
// If the type is going to use a custom formatter we should just use that,
3463
3463
// instead of trying to instantiate a custom formatter for its erased handle
3464
3464
// type
@@ -3472,7 +3472,7 @@ consteval typename _ParseContext::iterator _Compile_time_parse_format_specs(_Par
3472
3472
template <class _CharT, class... _Args>
3473
3473
struct _Format_checker {
3474
3474
using _ParseContext = basic_format_parse_context<_CharT>;
3475
- using _ParseFunc = typename _ParseContext::iterator (*)(_ParseContext&);
3475
+ using _ParseFunc = _ParseContext::iterator (*)(_ParseContext&);
3476
3476
3477
3477
static constexpr size_t _Num_args = sizeof...(_Args);
3478
3478
_ParseContext _Parse_context;
@@ -3557,7 +3557,7 @@ template <class _Ty, class _CharT, _Basic_format_arg_type _ArgType>
3557
3557
struct _Formatter_base {
3558
3558
using _Pc = basic_format_parse_context<_CharT>;
3559
3559
3560
- constexpr typename _Pc::iterator parse(_Pc& _ParseCtx) {
3560
+ constexpr _Pc::iterator parse(_Pc& _ParseCtx) {
3561
3561
_Specs_checker<_Dynamic_specs_handler<_Pc>> _Handler(_Dynamic_specs_handler<_Pc>{_Specs, _ParseCtx}, _ArgType);
3562
3562
const auto _It = _Parse_format_specs(_ParseCtx._Unchecked_begin(), _ParseCtx._Unchecked_end(), _Handler);
3563
3563
if (_It != _ParseCtx._Unchecked_end() && *_It != '}') {
@@ -3567,7 +3567,7 @@ struct _Formatter_base {
3567
3567
}
3568
3568
3569
3569
template <class _FormatContext>
3570
- typename _FormatContext::iterator format(const _Ty& _Val, _FormatContext& _FormatCtx) const {
3570
+ _FormatContext::iterator format(const _Ty& _Val, _FormatContext& _FormatCtx) const {
3571
3571
_Dynamic_format_specs<_CharT> _Format_specs = _Specs;
3572
3572
if (_Specs._Dynamic_width_index >= 0) {
3573
3573
_Format_specs._Width =
0 commit comments