diff --git a/include/libcamera/base/details/cxx20.h b/include/libcamera/base/details/cxx20.h
new file mode 100644
index 000000000..0d6173d1b
--- /dev/null
+++ b/include/libcamera/base/details/cxx20.h
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2025, Ideas on Board Oy
+ *
+ * C++20 polyfills
+ */
+
+#pragma once
+
+namespace libcamera::details::cxx20 {
+
+} /* namespace libcamera::details::cxx20 */
diff --git a/include/libcamera/base/meson.build b/include/libcamera/base/meson.build
index f28ae4d42..9836daff9 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_details_headers = files([
+    'details/cxx20.h',
+])
+
 libcamera_base_headers = [
     libcamera_base_public_headers,
     libcamera_base_private_headers,
+    libcamera_base_details_headers,
 ]
 
 install_headers(libcamera_base_public_headers,
                 subdir : libcamera_base_include_dir)
+install_headers(libcamera_base_details_headers,
+                subdir : libcamera_base_include_dir / 'details')
