common::OverMembers<GVT, evaluate::AllIntrinsicTypes>::type u;
};
#endif
+
using Variable = const semantics::Symbol *;
using PathVariable = const parser::Variable;
using Scope = const semantics::Scope;
using RuntimeCallArguments = CallArguments;
}
-#endif
+#endif // FORTRAN_INTERMEDIATEREPRESENTATION_COMMON_H_
namespace Fortran::IntermediateRepresentation {
template<typename T, typename E = void> struct SumTypeMixin {};
-template<typename T> // T must be std::optional<...>
+template<typename T> // T must be std::variant<...>
struct SumTypeMixin<T, std::enable_if_t<std::variant_size_v<T>>> {
template<typename A> SumTypeMixin(A &&x) : u{std::move(x)} {}
using SumTypeTrait = std::true_type;
};
template<typename T, typename E = void> struct SumTypeCopyMixin {};
-template<typename T> // T must be std::optional<...>
+template<typename T> // T must be std::variant<...>
struct SumTypeCopyMixin<T, std::enable_if_t<std::variant_size_v<T>>> {
using CopyableSumTypeTrait = std::true_type;
SumTypeCopyMixin(SumTypeCopyMixin &&) = default;
}
-#endif
+#endif // FORTRAN_INTERMEDIATEREPRESENTATION_COMMON_H_