diff --git a/mfbt/tests/TestResult.cpp b/mfbt/tests/TestResult.cpp
index b66d3b608ed2c0f27d380833eb01149876ca8a43..20680e41c832ca6511906b0dd898de2163c3fe09 100644
--- a/mfbt/tests/TestResult.cpp
+++ b/mfbt/tests/TestResult.cpp
@@ -98,11 +98,13 @@ static_assert(sizeof(Foo32) >= sizeof(uintptr_t) ||
                   sizeof(Result<Foo16, Foo32>) <= sizeof(uintptr_t),
               "Result with small types should be pointer-sized");
 
+#if __cplusplus < 202002L
 static_assert(std::is_literal_type_v<Result<int*, Failed>>);
 static_assert(std::is_literal_type_v<Result<Ok, Failed>>);
 static_assert(std::is_literal_type_v<Result<Ok, Foo8>>);
 static_assert(std::is_literal_type_v<Result<Foo8, Foo16>>);
 static_assert(!std::is_literal_type_v<Result<Ok, UniquePtr<int>>>);
+#endif
 
 static constexpr GenericErrorResult<Failed> Fail() { return Err(Failed{}); }
 
diff --git a/mfbt/tests/TestTypedEnum.cpp b/mfbt/tests/TestTypedEnum.cpp
index 814d3485ce416df84a06dddc02bc7839ae1fca5c..cddbb39e0b75fecdb44dc6b1dfcd983c81c8048a 100644
--- a/mfbt/tests/TestTypedEnum.cpp
+++ b/mfbt/tests/TestTypedEnum.cpp
@@ -11,10 +11,10 @@
 #include <type_traits>
 
 // A rough feature check for is_literal_type. Not very carefully checked.
-// Feel free to amend as needed.
+// Feel free to amend as needed. is_literal_type was removed in C++20.
 // We leave ANDROID out because it's using stlport which doesn't have
 // std::is_literal_type.
-#if __cplusplus >= 201103L && !defined(ANDROID)
+#if __cplusplus >= 201103L && __cplusplus < 202002L && !defined(ANDROID)
 #  if defined(__clang__)
 /*
  * Per Clang documentation, "Note that marketing version numbers should not