Skip to content

Commit 7c29937

Browse files
author
Liam Mitchell
committed
Avoid specializing templates within an outer class
1 parent 20ca243 commit 7c29937

File tree

1 file changed

+25
-25
lines changed

1 file changed

+25
-25
lines changed

include/EASTL/variant.h

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1282,36 +1282,36 @@ namespace eastl
12821282

12831283
};
12841284

1285-
1286-
// abstracts calling visit on a single variant with return types convertible to R
1287-
struct visitor_caller_one_r
1285+
template <typename R>
1286+
struct visitor_r
12881287
{
1289-
template <typename R>
1290-
struct visitor_r
1288+
template <typename Visitor, typename Variant, size_t I>
1289+
static EA_CONSTEXPR R invoke_visitor_r(Visitor&& visitor, Variant&& variant)
12911290
{
1292-
template <typename Visitor, typename Variant, size_t I>
1293-
static EA_CONSTEXPR R invoke_visitor_r(Visitor&& visitor, Variant&& variant)
1294-
{
1295-
return eastl::invoke(eastl::forward<Visitor>(visitor),
1296-
eastl::get<I>(eastl::forward<Variant>(variant)));
1297-
}
1298-
};
1291+
return eastl::invoke(eastl::forward<Visitor>(visitor),
1292+
eastl::get<I>(eastl::forward<Variant>(variant)));
1293+
}
1294+
};
12991295

1300-
// void return type must discard the return values of the visitor even if the visitor returns a value.
1301-
template <>
1302-
struct visitor_r<void>
1296+
// void return type must discard the return values of the visitor even if the visitor returns a value.
1297+
template <>
1298+
struct visitor_r<void>
1299+
{
1300+
template <typename Visitor, typename Variant, size_t I>
1301+
static EA_CONSTEXPR void invoke_visitor_r(Visitor&& visitor, Variant&& variant)
13031302
{
1304-
template <typename Visitor, typename Variant, size_t I>
1305-
static EA_CONSTEXPR void invoke_visitor_r(Visitor&& visitor, Variant&& variant)
1306-
{
1307-
eastl::invoke(eastl::forward<Visitor>(visitor),
1308-
eastl::get<I>(eastl::forward<Variant>(variant)));
1309-
}
1310-
};
1311-
template<> struct visitor_r<const void> : public visitor_r<void> {};
1312-
template<> struct visitor_r<volatile void> : public visitor_r<void> {};
1313-
template<> struct visitor_r<const volatile void> : public visitor_r<void> {};
1303+
eastl::invoke(eastl::forward<Visitor>(visitor),
1304+
eastl::get<I>(eastl::forward<Variant>(variant)));
1305+
}
1306+
};
1307+
1308+
template<> struct visitor_r<const void> : public visitor_r<void> {};
1309+
template<> struct visitor_r<volatile void> : public visitor_r<void> {};
1310+
template<> struct visitor_r<const volatile void> : public visitor_r<void> {};
13141311

1312+
// abstracts calling visit on a single variant with return types convertible to R
1313+
struct visitor_caller_one_r
1314+
{
13151315
template <typename R, typename Visitor, typename Variant, size_t... VariantArgIndices>
13161316
static EA_CPP14_CONSTEXPR decltype(auto) call_index_r(Visitor&& visitor, Variant&& variant, eastl::index_sequence<VariantArgIndices...>)
13171317
{

0 commit comments

Comments
 (0)