diff --git a/arbor/morph/label_parse.cpp b/arbor/morph/label_parse.cpp
index 855e6e7a14ac0ee0986c2c985d5f301774241481..7321bdef6011812f6b551153deb0f0d719e20a70 100644
--- a/arbor/morph/label_parse.cpp
+++ b/arbor/morph/label_parse.cpp
@@ -352,7 +352,7 @@ parse_hopefully<std::any> eval(const s_expr& e) {
         // Evaluate the arguments, and return error state if an error occurred.
         auto args = eval_args(e.tail());
         if (!args) {
-            return args.error();
+            return util::unexpected(args.error());
         }
 
         // Find all candidate functions that match the name of the function.