Skip to content

Commit 2d36ce3

Browse files
committed
make utility type in Combine private and avoid collisions
msvc by default doesn't use two-phase lookup, so this caused conflicts
1 parent e0ccbab commit 2d36ce3

File tree

1 file changed

+20
-15
lines changed

1 file changed

+20
-15
lines changed

include/adm/detail/auto_base.hpp

+20-15
Original file line numberDiff line numberDiff line change
@@ -171,21 +171,23 @@ namespace adm {
171171

172172
template <typename A, typename... Tail>
173173
struct MakeCombineBase {
174-
using B = typename HasParametersT<Tail...>::type;
174+
using Base = typename HasParametersT<Tail...>::type;
175175

176176
using combine_add_remove =
177177
std::integral_constant<bool, typename A::has_add_remove() &&
178-
typename B::has_add_remove()>;
178+
typename Base::has_add_remove()>;
179179
using combine_get_set_has =
180180
std::integral_constant<bool, typename A::has_get_set_has() &&
181-
typename B::has_get_set_has()>;
181+
typename Base::has_get_set_has()>;
182182
using combine_isDefault_unset =
183-
std::integral_constant<bool, typename A::has_isDefault_unset() &&
184-
typename B::has_isDefault_unset()>;
183+
std::integral_constant<bool,
184+
typename A::has_isDefault_unset() &&
185+
typename Base::has_isDefault_unset()>;
185186

186187
using IsDefaultUnsetCombined =
187188
std::conditional_t<combine_isDefault_unset::value,
188-
CombineIsDefaultUnsetB<A, B>, CombineRaw<A, B>>;
189+
CombineIsDefaultUnsetB<A, Base>,
190+
CombineRaw<A, Base>>;
189191

190192
// - need to combine
191193
// - last in chain -> use CombineB<A, B>
@@ -195,16 +197,16 @@ namespace adm {
195197
using GetSetHasCombined = std::conditional_t<
196198
combine_get_set_has::value,
197199
std::conditional_t<!combine_isDefault_unset::value,
198-
CombineGetSetHasB<A, B>,
199-
CombineGetSetHas<A, B, IsDefaultUnsetCombined>>,
200+
CombineGetSetHasB<A, Base>,
201+
CombineGetSetHas<A, Base, IsDefaultUnsetCombined>>,
200202
IsDefaultUnsetCombined>;
201203

202204
using AddRemoveCombined = std::conditional_t<
203205
combine_add_remove::value,
204206
std::conditional_t<!(combine_isDefault_unset::value ||
205207
combine_get_set_has::value),
206-
CombineAddRemoveB<A, B>,
207-
CombineAddRemove<A, B, GetSetHasCombined>>,
208+
CombineAddRemoveB<A, Base>,
209+
CombineAddRemove<A, Base, GetSetHasCombined>>,
208210
GetSetHasCombined>;
209211

210212
using type = AddRemoveCombined;
@@ -213,17 +215,20 @@ namespace adm {
213215
/// a subclass of A and B, with methods according to their Flags
214216
template <typename A, typename... Tail>
215217
struct Combine : public MakeCombineBase<A, Tail...>::type {
216-
using B = typename HasParametersT<Tail...>::type;
218+
private:
219+
using Base = typename HasParametersT<Tail...>::type;
217220

221+
public:
218222
using has_get_set_has =
219223
std::integral_constant<bool, typename A::has_get_set_has() ||
220-
typename B::has_get_set_has()>;
224+
typename Base::has_get_set_has()>;
221225
using has_isDefault_unset =
222-
std::integral_constant<bool, typename A::has_isDefault_unset() ||
223-
typename B::has_isDefault_unset()>;
226+
std::integral_constant<bool,
227+
typename A::has_isDefault_unset() ||
228+
typename Base::has_isDefault_unset()>;
224229
using has_add_remove =
225230
std::integral_constant<bool, typename A::has_add_remove() ||
226-
typename B::has_add_remove()>;
231+
typename Base::has_add_remove()>;
227232
};
228233

229234
template <typename... Bases>

0 commit comments

Comments
 (0)