diff --git a/daemon/mgmt/rib-manager.cpp b/daemon/mgmt/rib-manager.cpp
index bf3b194..768526b 100644
--- a/daemon/mgmt/rib-manager.cpp
+++ b/daemon/mgmt/rib-manager.cpp
@@ -314,8 +314,7 @@
     BOOST_ASSERT(typeid(*params) == typeid(ndn::nfd::ControlParameters));
     BOOST_ASSERT(prefix == LOCALHOST_TOP_PREFIX || prefix == LOCALHOP_TOP_PREFIX);
 
-    ndn::ValidatorConfig& validator = prefix == LOCALHOST_TOP_PREFIX ?
-                                      m_localhostValidator : m_localhopValidator;
+    auto& validator = prefix == LOCALHOST_TOP_PREFIX ? m_localhostValidator : m_localhopValidator;
     validator.validate(interest,
                        bind([&interest, this, accept] { extractRequester(interest, accept); }),
                        bind([reject] { reject(ndn::mgmt::RejectReply::STATUS403); }));
@@ -326,19 +325,18 @@
 operator<<(std::ostream& os, RibManager::SlAnnounceResult res)
 {
   switch (res) {
-    case RibManager::SlAnnounceResult::OK:
-      return os << "OK";
-    case RibManager::SlAnnounceResult::ERROR:
-      return os << "ERROR";
-    case RibManager::SlAnnounceResult::VALIDATION_FAILURE:
-      return os << "VALIDATION_FAILURE";
-    case RibManager::SlAnnounceResult::EXPIRED:
-      return os << "EXPIRED";
-    case RibManager::SlAnnounceResult::NOT_FOUND:
-      return os << "NOT_FOUND";
+  case RibManager::SlAnnounceResult::OK:
+    return os << "OK";
+  case RibManager::SlAnnounceResult::ERROR:
+    return os << "ERROR";
+  case RibManager::SlAnnounceResult::VALIDATION_FAILURE:
+    return os << "VALIDATION_FAILURE";
+  case RibManager::SlAnnounceResult::EXPIRED:
+    return os << "EXPIRED";
+  case RibManager::SlAnnounceResult::NOT_FOUND:
+    return os << "NOT_FOUND";
   }
-  BOOST_ASSERT_MSG(false, "bad SlAnnounceResult");
-  return os;
+  NDN_THROW(std::invalid_argument("Unknown SlAnnounceResult"));
 }
 
 RibManager::SlAnnounceResult
@@ -351,10 +349,8 @@
     return SlAnnounceResult::ERROR;
   case RibUpdateResult::EXPIRED:
     return SlAnnounceResult::EXPIRED;
-  default:
-    BOOST_ASSERT(false);
-    return SlAnnounceResult::ERROR;
   }
+  NDN_CXX_UNREACHABLE;
 }
 
 void
diff --git a/tests/daemon/face/lp-reliability.t.cpp b/tests/daemon/face/lp-reliability.t.cpp
index e814042..91bf094 100644
--- a/tests/daemon/face/lp-reliability.t.cpp
+++ b/tests/daemon/face/lp-reliability.t.cpp
@@ -69,25 +69,25 @@
   void
   doSendInterest(const Interest&, const EndpointId&) final
   {
-    BOOST_ASSERT(false);
+    BOOST_FAIL("unexpected doSendInterest");
   }
 
   void
   doSendData(const Data&, const EndpointId&) final
   {
-    BOOST_ASSERT(false);
+    BOOST_FAIL("unexpected doSendData");
   }
 
   void
   doSendNack(const lp::Nack&, const EndpointId&) final
   {
-    BOOST_ASSERT(false);
+    BOOST_FAIL("unexpected doSendNack");
   }
 
   void
   doReceivePacket(const Block&, const EndpointId&) final
   {
-    BOOST_ASSERT(false);
+    BOOST_FAIL("unexpected doReceivePacket");
   }
 };
 
diff --git a/tools/nfdc/command-definition.cpp b/tools/nfdc/command-definition.cpp
index 4d92ca7..d421d11 100644
--- a/tools/nfdc/command-definition.cpp
+++ b/tools/nfdc/command-definition.cpp
@@ -90,8 +90,7 @@
     case ArgValueType::ROUTE_ORIGIN:
       return "origin";
   }
-  BOOST_ASSERT(false);
-  return "";
+  NDN_CXX_UNREACHABLE;
 }
 
 CommandDefinition::CommandDefinition(const std::string& noun, const std::string& verb)
@@ -247,8 +246,7 @@
   switch (valueType) {
     case ArgValueType::NONE:
     case ArgValueType::ANY:
-      BOOST_ASSERT(false);
-      return {};
+      break;
 
     case ArgValueType::BOOLEAN:
       return parseBoolean(token);
@@ -289,8 +287,7 @@
       return boost::lexical_cast<RouteOrigin>(token);
   }
 
-  BOOST_ASSERT(false);
-  return {};
+  NDN_CXX_UNREACHABLE;
 }
 
 } // namespace nfdc
