Skip to content

Commit

Permalink
Fix further C++20 compilation issues
Browse files Browse the repository at this point in the history
  • Loading branch information
onthegrid007 committed Aug 15, 2024
1 parent 70d1589 commit eac261d
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions include/nop/types/variant.h
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ class Variant {
// resulting type.
template <typename... Args>
void Construct(Args&&... args) {
index_ = value_.NOP_TEMPLATE Construct(std::forward<Args>(args)...);
index_ = value_.template Construct(std::forward<Args>(args)...);
}
void Construct(EmptyVariant) {}

Expand All @@ -256,14 +256,14 @@ class Variant {
// multiple element types.
template <typename T, typename U>
void Assign(TypeTag<T>, U&& value) {
if (!value_.NOP_TEMPLATE Assign(TypeTag<T>{}, index_, std::forward<U>(value))) {
if (!value_.template Assign(TypeTag<T>{}, index_, std::forward<U>(value))) {
Destruct();
Construct(TypeTag<T>{}, std::forward<U>(value));
}
}
template <typename T>
void Assign(T&& value) {
if (!value_.NOP_TEMPLATE Assign(index_, std::forward<T>(value))) {
if (!value_.template Assign(index_, std::forward<T>(value))) {
Destruct();
Construct(std::forward<T>(value));
}
Expand Down Expand Up @@ -357,30 +357,30 @@ namespace std {

template <typename T, typename... Types>
inline T& get(::nop::Variant<Types...>& v) {
return *v.NOP_TEMPLATE get<T>();
return *v.template get<T>();
}
template <typename T, typename... Types>
inline T&& get(::nop::Variant<Types...>&& v) {
return std::move(*v.NOP_TEMPLATE get<T>());
return std::move(*v.template get<T>());
}
template <typename T, typename... Types>
inline const T& get(const ::nop::Variant<Types...>& v) {
return *v.NOP_TEMPLATE get<T>();
return *v.template get<T>();
}
template <std::size_t I, typename... Types>
inline ::nop::detail::TypeForIndex<I, Types...>& get(
::nop::Variant<Types...>& v) {
return *v.NOP_TEMPLATE get<I>();
return *v.template get<I>();
}
template <std::size_t I, typename... Types>
inline ::nop::detail::TypeForIndex<I, Types...>&& get(
::nop::Variant<Types...>&& v) {
return std::move(*v.NOP_TEMPLATE get<I>());
return std::move(*v.template get<I>());
}
template <std::size_t I, typename... Types>
inline const ::nop::detail::TypeForIndex<I, Types...>& get(
const ::nop::Variant<Types...>& v) {
return *v.NOP_TEMPLATE get<I>();
return *v.template get<I>();
}

} // namespace std
Expand Down

0 comments on commit eac261d

Please sign in to comment.