[all-commits] [llvm/llvm-project] 7cafe0: [libc++] P3029R1: Better `mdspan`'s CTAD (#87873)

Xiaoyang Liu via All-commits all-commits at lists.llvm.org
Fri Apr 12 11:32:45 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 7cafe04e0d74c1e9f7e3871a0bcdf4ccb1c89f0c
      https://github.com/llvm/llvm-project/commit/7cafe04e0d74c1e9f7e3871a0bcdf4ccb1c89f0c
  Author: Xiaoyang Liu <siujoeng.lau at gmail.com>
  Date:   2024-04-12 (Fri, 12 Apr 2024)

  Changed paths:
    M libcxx/docs/ReleaseNotes/19.rst
    M libcxx/docs/Status/Cxx2cPapers.csv
    M libcxx/include/__mdspan/mdspan.h
    M libcxx/include/mdspan
    M libcxx/include/span
    M libcxx/test/std/containers/views/mdspan/mdspan/deduction.pass.cpp
    M libcxx/test/std/containers/views/views.span/span.cons/deduct.pass.cpp

  Log Message:
  -----------
  [libc++] P3029R1: Better `mdspan`'s CTAD (#87873)

## Abstract

This pull request implements [P3029R1](https://wg21.link/P3029R1). The
paper discusses the current behavior of `mdspan`'s most common
pointer-indices CTAD, where the `Extents` template parameter is deduced
as `dextents` (dynamic extents), even when passing compile-time constant
values. The author believes this behavior is suboptimal, as it doesn't
take advantage of the compile-time information. The proposed change
suggests deducing static extents if `integral_constant`-like constants
are passed, resulting in more intuitive syntax and less error-prone
code.

## Reference

- [P3029R1](https://wg21.link/P3029R1)
- [Draft C++ Standard: [span.syn]](https://eel.is/c++draft/span.syn)
- [Draft C++ Standard: [mdspan.syn]](https://eel.is/c++draft/mdspan.syn)



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list