:white_check_mark: add regression test
diff --git a/.travis.yml b/.travis.yml
index f48ee1f..c671e93 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -300,6 +300,16 @@
         sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-7']
         packages: ['g++-7', 'clang-7', 'ninja-build']
 
+  - os: linux
+    compiler: clang
+    env:
+      - COMPILER=clang++-7
+      - CXX_STANDARD=20
+    addons:
+      apt:
+        sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-7']
+        packages: ['g++-7', 'clang-7', 'ninja-build']
+
 ################
 # build script #
 ################
diff --git a/test/src/unit-regression2.cpp b/test/src/unit-regression2.cpp
index ca50cdd..1171531 100644
--- a/test/src/unit-regression2.cpp
+++ b/test/src/unit-regression2.cpp
@@ -51,6 +51,10 @@
     #include <variant>
 #endif
 
+#ifdef JSON_HAS_CPP_20
+    #include <span>
+#endif
+
 /////////////////////////////////////////////////////////////////////
 // for #1021
 /////////////////////////////////////////////////////////////////////
@@ -484,4 +488,14 @@
         json j = json::parse(ss, nullptr, true, true);
         CHECK(j.dump() == "{}");
     }
+
+#ifdef JSON_HAS_CPP_20
+    SECTION("issue #2546 - parsing containers of std::byte")
+    {
+        const char DATA[] = R"("Hello, world!")";
+        const auto s = std::as_bytes(std::span(DATA));
+        json j = json::parse(s);
+        CHECK(j.dump == "Hello, world!");
+    }
+#endif
 }