[libcxx-commits] [libcxx] [libc++] Add container_traits (prework for `std::flat_map`) (PR #109578)

Louis Dionne via libcxx-commits libcxx-commits at lists.llvm.org
Fri Oct 11 10:17:56 PDT 2024


================
@@ -0,0 +1,36 @@
+// -*- C++ -*-
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef _LIBCPP___TYPE_TRAITS_CONTAINER_TRAITS_H
+#define _LIBCPP___TYPE_TRAITS_CONTAINER_TRAITS_H
+
+#include <__config>
+
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
+#  pragma GCC system_header
+#endif
+
+_LIBCPP_BEGIN_NAMESPACE_STD
+
----------------
ldionne wrote:

The documentation for this traits class should also mention something like:

> These traits should only be used for optimization or QoI purposes. In particular, since this is a libc++ internal mechanism, no user-defined containers should be expected to specialize these traits (in fact it would be illegal for them to do so). Hence, when using these traits to implement something, make sure that a container that fails to specialize these traits does not result in non-conforming code.

https://github.com/llvm/llvm-project/pull/109578


More information about the libcxx-commits mailing list