diff --git a/include/libcamera/base/internal/cxx20.h b/include/libcamera/base/internal/cxx20.h
new file mode 100644
index 0000000000..70a43f83c9
--- /dev/null
+++ b/include/libcamera/base/internal/cxx20.h
@@ -0,0 +1,18 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2025, Ideas on Board Oy
+ *
+ * C++20 polyfills
+ */
+
+#pragma once
+
+/**
+ * \internal
+ * \file cxx20.h
+ * \brief C++17 implementations of certain C++20 types and functions
+ */
+
+namespace libcamera::internal::cxx20 {
+
+} /* namespace libcamera::internal::cxx20 */
diff --git a/include/libcamera/base/meson.build b/include/libcamera/base/meson.build
index f28ae4d42a..ee42c9910f 100644
--- a/include/libcamera/base/meson.build
+++ b/include/libcamera/base/meson.build
@@ -31,10 +31,17 @@ libcamera_base_private_headers = files([
     'utils.h',
 ])
 
+libcamera_base_internal_headers = files([
+    'internal/cxx20.h',
+])
+
 libcamera_base_headers = [
     libcamera_base_public_headers,
     libcamera_base_private_headers,
+    libcamera_base_internal_headers,
 ]
 
 install_headers(libcamera_base_public_headers,
                 subdir : libcamera_base_include_dir)
+install_headers(libcamera_base_internal_headers,
+                subdir : libcamera_base_include_dir / 'internal')
