diff --git a/arbor/include/arbor/recipe.hpp b/arbor/include/arbor/recipe.hpp
index bf17317e42d531e31f41fee83e23a56672225c99..1f116b970ee3a6038b6fafaa77fc228abffbc238 100644
--- a/arbor/include/arbor/recipe.hpp
+++ b/arbor/include/arbor/recipe.hpp
@@ -65,24 +65,28 @@ struct ARB_ARBOR_API has_gap_junctions {
     virtual std::vector<gap_junction_connection> gap_junctions_on(cell_gid_type) const {
         return {};
     }
+    virtual ~has_gap_junctions() {}
 };
 
 struct ARB_ARBOR_API has_synapses {
     virtual std::vector<cell_connection> connections_on(cell_gid_type) const {
         return {};
     }
+    virtual ~has_synapses() {}
 };
 
 struct ARB_ARBOR_API has_probes {
     virtual std::vector<probe_info> get_probes(cell_gid_type gid) const {
         return {};
     }
+    virtual ~has_probes() {}
 };
 
 struct ARB_ARBOR_API has_generators {
     virtual std::vector<event_generator> event_generators(cell_gid_type) const {
         return {};
     }
+    virtual ~has_generators() {}
 };
 
 // Toppings allow updating a simulation