Skip to content

[libcxx] Use of std::aligned_storage deprecated in C++23 #62844

@aaronmondal

Description

@aaronmondal

Building libcxx with C++23 emits a bunch of deprecation warnings due to the use of std::aligned_storage in a few libcxx sources.

This seems to be the only kind of warning triggered by C++23 though. (supported) Tests seem to pass as well 😊

/home/aaron/aaronmondal/llvm-project/libcxx/src/include/sso_allocator.h:37:14: warning: 'aligned_storage<240>' is deprecated [-Wdeprecated-declarations]
    typename aligned_storage<sizeof(_Tp) * _Np>::type buf_;
             ^
/home/aaron/aaronmondal/llvm-project/build/include/c++/v1/__memory/allocator_traits.h:238:33: note: in instantiation of template class 'std::__sso_allocator<std::locale::facet *, 30>' requested here
    using value_type = typename allocator_type::value_type;
                                ^
/home/aaron/aaronmondal/llvm-project/build/include/c++/v1/vector:390:22: note: in instantiation of template class 'std::allocator_traits<std::__sso_allocator<std::locale::facet *, 30>>' requested here
    typedef typename __alloc_traits::size_type              size_type;
                     ^
/home/aaron/aaronmondal/llvm-project/libcxx/src/locale.cpp:138:49: note: in instantiation of template class 'std::vector<std::locale::facet *, std::__sso_allocator<std::locale::facet *, 30>>' requested here
    vector<facet*, __sso_allocator<facet*, N> > facets_;
                                                ^
/home/aaron/aaronmondal/llvm-project/build/include/c++/v1/__type_traits/aligned_storage.h:86:8: note: 'aligned_storage<240>' has been explicitly marked deprecated here
struct _LIBCPP_DEPRECATED_IN_CXX23 _LIBCPP_TEMPLATE_VIS aligned_storage
       ^
/home/aaron/aaronmondal/llvm-project/build/include/c++/v1/__config:814:39: note: expanded from macro '_LIBCPP_DEPRECATED_IN_CXX23'
#  define _LIBCPP_DEPRECATED_IN_CXX23 _LIBCPP_DEPRECATED
                                      ^
/home/aaron/aaronmondal/llvm-project/build/include/c++/v1/__config:775:49: note: expanded from macro '_LIBCPP_DEPRECATED'
#      define _LIBCPP_DEPRECATED __attribute__((__deprecated__))
                                                ^

cc @mordante @ldionne @philnik777

Metadata

Metadata

Assignees

No one assigned

    Labels

    c++23enhancementImproving things as opposed to bug fixing, e.g. new or missing featurelibc++libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions