diff --git a/src/util/optional.hpp b/src/util/optional.hpp
index 11abdc551ade3b4788ac6a4a3aa64d1400b1c937..7405f8306abf95ffb2b14db77b21f58c9ec23dd1 100644
--- a/src/util/optional.hpp
+++ b/src/util/optional.hpp
@@ -334,7 +334,7 @@ struct optional<X&>: detail::optional_base<X&> {
 
     template <
         typename Y,
-        typename = typename std::enable_if<!detail::is_optional<Y>::value>>
+        typename = typename std::enable_if<!detail::is_optional<Y>::value>::type>
     optional& operator=(Y& y) {
         set = true;
         ref() = y;