diff --git a/arbor/benchmark_cell_group.cpp b/arbor/benchmark_cell_group.cpp
index 4c24ff423fa6c6169576e30bdc1b19d930fc03f9..c6a6e2582f9422ea2a76b2b3aa9892bf9cd36ce2 100644
--- a/arbor/benchmark_cell_group.cpp
+++ b/arbor/benchmark_cell_group.cpp
@@ -86,7 +86,7 @@ void benchmark_cell_group::add_sampler(sampler_association_handle h,
                                    sampler_function fn,
                                    sampling_policy policy)
 {
-    std::logic_error("A benchmark_cell group doen't support sampling of internal state!");
+    throw std::logic_error("A benchmark_cell group doen't support sampling of internal state!");
 }
 
 } // namespace arb
diff --git a/arbor/spike_source_cell_group.cpp b/arbor/spike_source_cell_group.cpp
index 0e3b3ba86ab54265894e2a2ca493b496b3e94e64..7abba54e961ed85e6509f7bf4529a6118b3d2a40 100644
--- a/arbor/spike_source_cell_group.cpp
+++ b/arbor/spike_source_cell_group.cpp
@@ -64,7 +64,7 @@ void spike_source_cell_group::clear_spikes() {
 }
 
 void spike_source_cell_group::add_sampler(sampler_association_handle, cell_member_predicate, schedule, sampler_function, sampling_policy) {
-    std::logic_error("A spike_source_cell group doen't support sampling of internal state!");
+    throw std::logic_error("A spike_source_cell group doen't support sampling of internal state!");
 }
 
 } // namespace arb
diff --git a/example/brunel/brunel.cpp b/example/brunel/brunel.cpp
index 03f63e8e1e2cb7f5896790624879de2471b3034b..3e595d57605c2cea347d670d2cfe46ecb1c662dc 100644
--- a/example/brunel/brunel.cpp
+++ b/example/brunel/brunel.cpp
@@ -93,7 +93,7 @@ public:
         ncells_exc_(nexc), ncells_inh_(ninh), delay_(delay), seed_(seed) {
         // Make sure that in_degree_prop in the interval (0, 1]
         if (in_degree_prop <= 0.0 || in_degree_prop > 1.0) {
-            std::out_of_range("The proportion of incoming connections should be in the interval (0, 1].");
+            throw std::out_of_range("The proportion of incoming connections should be in the interval (0, 1].");
         }
 
         // Set up the parameters.
diff --git a/test/unit/test_simd.cpp b/test/unit/test_simd.cpp
index 67ac6a1adefcc54fc04c8d3e34b3cab03ff182b5..94bf37e896a4cc929530e0374fc893aa0d83d868 100644
--- a/test/unit/test_simd.cpp
+++ b/test/unit/test_simd.cpp
@@ -129,8 +129,9 @@ TYPED_TEST_P(simd_value, elements) {
     EXPECT_TRUE(testing::indexed_eq_n(N, bv, b));
 
     // array rvalue initialization:
+    auto cv_copy = cv;
     simd c(std::move(cv));
-    EXPECT_TRUE(testing::indexed_eq_n(N, cv, c));
+    EXPECT_TRUE(testing::indexed_eq_n(N, cv_copy, c));
 
     // pointer initialization:
     simd d(&dv[0]);
@@ -415,8 +416,9 @@ TYPED_TEST_P(simd_value, mask_elements) {
         EXPECT_TRUE(testing::indexed_eq_n(N, bv, b));
 
         // array rvalue initialization:
+        auto cv_copy = cv;
         mask c(std::move(cv));
-        EXPECT_TRUE(testing::indexed_eq_n(N, cv, c));
+        EXPECT_TRUE(testing::indexed_eq_n(N, cv_copy, c));
 
         // pointer initialization:
         mask d(&dv[0]);