diff --git a/GaudiKernel/src/Lib/StatusCode.cpp b/GaudiKernel/src/Lib/StatusCode.cpp
index 9d85adeebe63ad4121f244955e0cf8770ab50e7e..2f2e7106f6584054483afc59dce188e91bfd469d 100644
--- a/GaudiKernel/src/Lib/StatusCode.cpp
+++ b/GaudiKernel/src/Lib/StatusCode.cpp
@@ -12,6 +12,10 @@
 // statics
 bool StatusCode::s_checking( false );
 
+constexpr const StatusCode::ErrorCode StatusCode::SUCCESS;
+constexpr const StatusCode::ErrorCode StatusCode::FAILURE;
+constexpr const StatusCode::ErrorCode StatusCode::RECOVERABLE;
+
 namespace {
   /// Default StatusCode category
   struct DefaultCategory : public StatusCode::Category {
diff --git a/GaudiKernel/tests/src/test_StatusCode.cpp b/GaudiKernel/tests/src/test_StatusCode.cpp
index 18766aedc5397b13dd1dc2fc56a8df4bd95f0490..2523d70a8a45b50d22e028f4e73cacccf6e3d8fc 100644
--- a/GaudiKernel/tests/src/test_StatusCode.cpp
+++ b/GaudiKernel/tests/src/test_StatusCode.cpp
@@ -407,3 +407,18 @@ BOOST_AUTO_TEST_CASE( conversions ) {
   // sc = 42;     // no implicit conversion from int
   // int i = sc;  // no implicit conversion to int
 }
+
+/// Function used for testing that the constants in @c StatusCode can be found
+/// by constant references.
+bool __attribute__( ( noinline ) )
+testReferencePassing( const StatusCode::ErrorCode& value, const StatusCode::ErrorCode& reference ) {
+  return ( value == reference );
+}
+
+BOOST_AUTO_TEST_CASE( const_definitions ) {
+  // Test whether the test can compile/link correctly when passing the
+  // constants in @c StatusCode into a function by constant reference.
+  BOOST_CHECK( testReferencePassing( StatusCode::SUCCESS, StatusCode::SUCCESS ) );
+  BOOST_CHECK( testReferencePassing( StatusCode::FAILURE, StatusCode::FAILURE ) );
+  BOOST_CHECK( testReferencePassing( StatusCode::RECOVERABLE, StatusCode::RECOVERABLE ) );
+}