Skip to content

Commit 2bcaef9

Browse files
committed
More windows fixes
1 parent 8d42b88 commit 2bcaef9

1 file changed

Lines changed: 23 additions & 6 deletions

File tree

tests/yup_audio_basics/yup_AudioDataConverters.cpp

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,23 @@ using namespace yup;
4545
namespace
4646
{
4747

48+
// MSVC strict-mode C++20 two-phase lookup fails to parse 4-argument template
49+
// instantiations with dependent types inside template struct bodies (C2059).
50+
// These 2-arg namespace-scope aliases sidestep that by reducing each problematic
51+
// 4-arg Pointer<Format, Endian, Interleaving, Constness> to a 2-arg wrapper.
52+
template <class Format, class Endian>
53+
using ADNonInterleavedWritable = AudioData::Pointer<Format, Endian, AudioData::NonInterleaved, AudioData::NonConst>;
54+
55+
template <class Format, class Endian>
56+
using ADNonInterleavedConst = AudioData::Pointer<Format, Endian, AudioData::NonInterleaved, AudioData::Const>;
57+
4858
template <class F1, class E1, class F2, class E2>
4959
struct RoundTripConversionTest
5060
{
51-
using WritablePtr = AudioData::Pointer<F1, E1, AudioData::NonInterleaved, AudioData::NonConst>;
52-
using ConstPtr = AudioData::Pointer<F1, E1, AudioData::NonInterleaved, AudioData::Const>;
53-
using F2WritablePtr = AudioData::Pointer<F2, E2, AudioData::NonInterleaved, AudioData::NonConst>;
54-
using F2ConstPtr = AudioData::Pointer<F2, E2, AudioData::NonInterleaved, AudioData::Const>;
61+
using WritablePtr = ADNonInterleavedWritable<F1, E1>;
62+
using ConstPtr = ADNonInterleavedConst<F1, E1>;
63+
using F2WritablePtr = ADNonInterleavedWritable<F2, E2>;
64+
using F2ConstPtr = ADNonInterleavedConst<F2, E2>;
5565
using FwdConv = AudioData::ConverterInstance<ConstPtr, F2WritablePtr>;
5666
using RevConv = AudioData::ConverterInstance<F2ConstPtr, WritablePtr>;
5767

@@ -108,11 +118,18 @@ struct RoundTripConversionTest
108118
}
109119
};
110120

121+
// 3-arg wrappers that fix the same MSVC 4-arg issue in AllEndiannessTest.
122+
template <class F1, class E1, class F2>
123+
using RoundTripBigEndian = RoundTripConversionTest<F1, E1, F2, AudioData::BigEndian>;
124+
125+
template <class F1, class E1, class F2>
126+
using RoundTripLittleEndian = RoundTripConversionTest<F1, E1, F2, AudioData::LittleEndian>;
127+
111128
template <class F1, class E1, class FormatType>
112129
struct AllEndiannessTest
113130
{
114-
using BigTest = RoundTripConversionTest<F1, E1, FormatType, AudioData::BigEndian>;
115-
using LittleTest = RoundTripConversionTest<F1, E1, FormatType, AudioData::LittleEndian>;
131+
using BigTest = RoundTripBigEndian<F1, E1, FormatType>;
132+
using LittleTest = RoundTripLittleEndian<F1, E1, FormatType>;
116133

117134
static void run (Random& r)
118135
{

0 commit comments

Comments
 (0)