Skip to content

Commit c15b618

Browse files
committed
[UCRT] Add using declatarions for template base-classes (GCC compatibility)
1 parent 5ba105e commit c15b618

File tree

2 files changed

+71
-0
lines changed

2 files changed

+71
-0
lines changed

sdk/lib/ucrt/inc/corecrt_internal_simd.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
: __crt_simd_pack_traits<Isa>
4343
{
4444
using element_type = Element;
45+
using __crt_simd_pack_traits<Isa>::pack_size;
4546

4647
enum : size_t
4748
{

sdk/lib/ucrt/inc/corecrt_internal_stdio_output.h

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,10 @@ template <typename Character>
111111
class console_output_adapter
112112
: public output_adapter_common<Character, console_output_adapter<Character>>
113113
{
114+
#ifndef _MSC_VER // For retarded compilers!
115+
using oac_base = output_adapter_common<Character, console_output_adapter<Character>>;
116+
using oac_base::write_string_impl;
117+
#endif
114118
public:
115119
typedef __acrt_stdio_char_traits<Character> char_traits;
116120

@@ -141,6 +145,10 @@ template <typename Character>
141145
class stream_output_adapter
142146
: public output_adapter_common<Character, stream_output_adapter<Character>>
143147
{
148+
#ifndef _MSC_VER // For retarded compilers!
149+
using oac_base = output_adapter_common<Character, stream_output_adapter<Character>>;
150+
using oac_base::write_string_impl;
151+
#endif
144152
public:
145153
typedef __acrt_stdio_char_traits<Character> char_traits;
146154

@@ -969,6 +977,11 @@ class output_adapter_data
969977
: protected common_data<Character>
970978
{
971979
protected:
980+
#ifndef _MSC_VER // For retarded compilers!
981+
using common_data<Character>::_options;
982+
using common_data<Character>::_format_it;
983+
using common_data<Character>::_valist_it;
984+
#endif
972985
output_adapter_data(
973986
OutputAdapter const& output_adapter,
974987
uint64_t const options,
@@ -1003,6 +1016,12 @@ class standard_base
10031016
: protected output_adapter_data<Character, OutputAdapter>
10041017
{
10051018
protected:
1019+
#ifndef _MSC_VER // For retarded compilers!
1020+
using common_data_base = typename output_adapter_data<Character, OutputAdapter>::template common_data<Character>;
1021+
using common_data_base::_valist_it;
1022+
using common_data_base::_field_width;
1023+
using common_data_base::_precision;
1024+
#endif
10061025
template <typename... Ts>
10071026
standard_base(Ts&&... arguments) throw()
10081027
: output_adapter_data<Character, OutputAdapter>{arguments... },
@@ -1106,6 +1125,11 @@ class format_validation_base
11061125
: protected standard_base<Character, OutputAdapter>
11071126
{
11081127
protected:
1128+
#ifndef _MSC_VER // For retarded compilers!
1129+
using common_data_base = typename standard_base<Character, OutputAdapter>::template output_adapter_data<Character, OutputAdapter>::template common_data<Character>;
1130+
using common_data_base::_ptd;
1131+
using common_data_base::_state;
1132+
#endif
11091133
template <typename... Ts>
11101134
format_validation_base(Ts&&... arguments) throw()
11111135
: standard_base<Character, OutputAdapter>{arguments...}
@@ -1150,6 +1174,19 @@ class positional_parameter_base
11501174
: protected format_validation_base<Character, OutputAdapter>
11511175
{
11521176
protected:
1177+
#if defined(__GNUC__) || defined(__clang__) // For retarded compilers!
1178+
using common_data_base = typename format_validation_base<Character, OutputAdapter>::template standard_base<Character, OutputAdapter>::template output_adapter_data<Character, OutputAdapter>::template common_data<Character>;
1179+
using output_adapter_data = typename format_validation_base<Character, OutputAdapter>::template standard_base<Character, OutputAdapter>::template output_adapter_data<Character, OutputAdapter>;
1180+
using common_data_base::_format_it;
1181+
using common_data_base::_ptd;
1182+
using common_data_base::_field_width;
1183+
using common_data_base::_precision;
1184+
using common_data_base::_format_char;
1185+
using common_data_base::_valist_it;
1186+
using common_data_base::_length;
1187+
using common_data_base::_state;
1188+
using common_data_base::_options;
1189+
#endif
11531190

11541191
typedef positional_parameter_base self_type;
11551192
typedef format_validation_base base_type;
@@ -1641,6 +1678,39 @@ class output_processor
16411678
: private ProcessorBase
16421679
{
16431680
public:
1681+
#ifndef _MSC_VER // For retarded compilers!
1682+
using ProcessorBase::advance_to_next_pass;
1683+
using ProcessorBase::validate_and_update_state_at_beginning_of_format_character;
1684+
using ProcessorBase::validate_and_update_state_at_end_of_format_string;
1685+
using ProcessorBase::should_skip_normal_state_processing;
1686+
using ProcessorBase::update_field_width;
1687+
using ProcessorBase::should_format;
1688+
using ProcessorBase::update_precision;
1689+
using ProcessorBase::should_skip_type_state_output;
1690+
using ProcessorBase::validate_state_for_type_case_a;
1691+
using ProcessorBase::tchar_string;
1692+
using ProcessorBase::state_transition_table;
1693+
using ProcessorBase::state_count;
1694+
using oad_base = typename ProcessorBase::output_adapter_data;
1695+
using oad_base::_output_adapter;
1696+
using common_data_base = typename ProcessorBase::common_data_base;
1697+
using common_data_base::_string_length;
1698+
using common_data_base::_ptd;
1699+
using common_data_base::_format_it;
1700+
using common_data_base::_state;
1701+
using common_data_base::_format_char;
1702+
using common_data_base::_characters_written;
1703+
using common_data_base::_string_is_wide;
1704+
using common_data_base::_field_width;
1705+
using common_data_base::_suppress_output;
1706+
using common_data_base::_flags;
1707+
using common_data_base::_precision;
1708+
using common_data_base::_length;
1709+
using common_data_base::_options;
1710+
using common_data_base::_buffer;
1711+
using common_data_base::_narrow_string;
1712+
using common_data_base::_wide_string;
1713+
#endif
16441714

16451715
typedef __acrt_stdio_char_traits<Character> char_traits;
16461716

0 commit comments

Comments
 (0)