https://git.reactos.org/?p=reactos.git;a=commitdiff;h=c15b618a17c73384d897f…
commit c15b618a17c73384d897f4d466b2c6a4d3d19256
Author: Timo Kreuzer <timo.kreuzer(a)reactos.org>
AuthorDate: Mon Oct 14 00:30:51 2024 +0300
Commit: Timo Kreuzer <timo.kreuzer(a)reactos.org>
CommitDate: Thu Jan 16 14:18:53 2025 +0200
[UCRT] Add using declatarions for template base-classes (GCC compatibility)
---
sdk/lib/ucrt/inc/corecrt_internal_simd.h | 1 +
sdk/lib/ucrt/inc/corecrt_internal_stdio_output.h | 70 ++++++++++++++++++++++++
2 files changed, 71 insertions(+)
diff --git a/sdk/lib/ucrt/inc/corecrt_internal_simd.h
b/sdk/lib/ucrt/inc/corecrt_internal_simd.h
index 6759c756900..5770418e034 100644
--- a/sdk/lib/ucrt/inc/corecrt_internal_simd.h
+++ b/sdk/lib/ucrt/inc/corecrt_internal_simd.h
@@ -42,6 +42,7 @@
: __crt_simd_pack_traits<Isa>
{
using element_type = Element;
+ using __crt_simd_pack_traits<Isa>::pack_size;
enum : size_t
{
diff --git a/sdk/lib/ucrt/inc/corecrt_internal_stdio_output.h
b/sdk/lib/ucrt/inc/corecrt_internal_stdio_output.h
index e3ebfe4fd6f..cde4af0e080 100644
--- a/sdk/lib/ucrt/inc/corecrt_internal_stdio_output.h
+++ b/sdk/lib/ucrt/inc/corecrt_internal_stdio_output.h
@@ -111,6 +111,10 @@ template <typename Character>
class console_output_adapter
: public output_adapter_common<Character,
console_output_adapter<Character>>
{
+#ifndef _MSC_VER // For retarded compilers!
+ using oac_base = output_adapter_common<Character,
console_output_adapter<Character>>;
+ using oac_base::write_string_impl;
+#endif
public:
typedef __acrt_stdio_char_traits<Character> char_traits;
@@ -141,6 +145,10 @@ template <typename Character>
class stream_output_adapter
: public output_adapter_common<Character,
stream_output_adapter<Character>>
{
+#ifndef _MSC_VER // For retarded compilers!
+ using oac_base = output_adapter_common<Character,
stream_output_adapter<Character>>;
+ using oac_base::write_string_impl;
+#endif
public:
typedef __acrt_stdio_char_traits<Character> char_traits;
@@ -969,6 +977,11 @@ class output_adapter_data
: protected common_data<Character>
{
protected:
+#ifndef _MSC_VER // For retarded compilers!
+ using common_data<Character>::_options;
+ using common_data<Character>::_format_it;
+ using common_data<Character>::_valist_it;
+#endif
output_adapter_data(
OutputAdapter const& output_adapter,
uint64_t const options,
@@ -1003,6 +1016,12 @@ class standard_base
: protected output_adapter_data<Character, OutputAdapter>
{
protected:
+#ifndef _MSC_VER // For retarded compilers!
+ using common_data_base = typename output_adapter_data<Character,
OutputAdapter>::template common_data<Character>;
+ using common_data_base::_valist_it;
+ using common_data_base::_field_width;
+ using common_data_base::_precision;
+#endif
template <typename... Ts>
standard_base(Ts&&... arguments) throw()
: output_adapter_data<Character, OutputAdapter>{arguments... },
@@ -1106,6 +1125,11 @@ class format_validation_base
: protected standard_base<Character, OutputAdapter>
{
protected:
+#ifndef _MSC_VER // For retarded compilers!
+ using common_data_base = typename standard_base<Character,
OutputAdapter>::template output_adapter_data<Character, OutputAdapter>::template
common_data<Character>;
+ using common_data_base::_ptd;
+ using common_data_base::_state;
+#endif
template <typename... Ts>
format_validation_base(Ts&&... arguments) throw()
: standard_base<Character, OutputAdapter>{arguments...}
@@ -1150,6 +1174,19 @@ class positional_parameter_base
: protected format_validation_base<Character, OutputAdapter>
{
protected:
+#if defined(__GNUC__) || defined(__clang__) // For retarded compilers!
+ 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>;
+ using output_adapter_data = typename format_validation_base<Character,
OutputAdapter>::template standard_base<Character, OutputAdapter>::template
output_adapter_data<Character, OutputAdapter>;
+ using common_data_base::_format_it;
+ using common_data_base::_ptd;
+ using common_data_base::_field_width;
+ using common_data_base::_precision;
+ using common_data_base::_format_char;
+ using common_data_base::_valist_it;
+ using common_data_base::_length;
+ using common_data_base::_state;
+ using common_data_base::_options;
+#endif
typedef positional_parameter_base self_type;
typedef format_validation_base base_type;
@@ -1641,6 +1678,39 @@ class output_processor
: private ProcessorBase
{
public:
+#ifndef _MSC_VER // For retarded compilers!
+ using ProcessorBase::advance_to_next_pass;
+ using ProcessorBase::validate_and_update_state_at_beginning_of_format_character;
+ using ProcessorBase::validate_and_update_state_at_end_of_format_string;
+ using ProcessorBase::should_skip_normal_state_processing;
+ using ProcessorBase::update_field_width;
+ using ProcessorBase::should_format;
+ using ProcessorBase::update_precision;
+ using ProcessorBase::should_skip_type_state_output;
+ using ProcessorBase::validate_state_for_type_case_a;
+ using ProcessorBase::tchar_string;
+ using ProcessorBase::state_transition_table;
+ using ProcessorBase::state_count;
+ using oad_base = typename ProcessorBase::output_adapter_data;
+ using oad_base::_output_adapter;
+ using common_data_base = typename ProcessorBase::common_data_base;
+ using common_data_base::_string_length;
+ using common_data_base::_ptd;
+ using common_data_base::_format_it;
+ using common_data_base::_state;
+ using common_data_base::_format_char;
+ using common_data_base::_characters_written;
+ using common_data_base::_string_is_wide;
+ using common_data_base::_field_width;
+ using common_data_base::_suppress_output;
+ using common_data_base::_flags;
+ using common_data_base::_precision;
+ using common_data_base::_length;
+ using common_data_base::_options;
+ using common_data_base::_buffer;
+ using common_data_base::_narrow_string;
+ using common_data_base::_wide_string;
+#endif
typedef __acrt_stdio_char_traits<Character> char_traits;