Skip to content

P2674R1: A trait for implicit lifetime types #105259

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
ldionne opened this issue Aug 20, 2024 · 1 comment · Fixed by #106870
Closed

P2674R1: A trait for implicit lifetime types #105259

ldionne opened this issue Aug 20, 2024 · 1 comment · Fixed by #106870
Assignees
Labels
c++23 libc++ libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi. wg21 paper Issues representing the implementation of a WG21 paper

Comments

@ldionne
Copy link
Member

ldionne commented Aug 20, 2024

Link: https://wg21.link/P2674R1

@ldionne ldionne added c++23 libc++ libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi. wg21 paper Issues representing the implementation of a WG21 paper labels Aug 20, 2024
@Zingam
Copy link
Contributor

Zingam commented Aug 24, 2024

A compiler intrinsic was implemented in #101807

I assign the task to myself if nobody minds that.

@Zingam Zingam self-assigned this Aug 24, 2024
H-G-Hristov added a commit to H-G-Hristov/llvm-project that referenced this issue Aug 31, 2024
Implements P2674R1: https://wg21.link/P2674R1

- https://eel.is/c++draft/type.traits
  - https://eel.is/c++draft/meta.type.synop
  - https://eel.is/c++draft/meta.unary.prop
- https://eel.is/c++draft/support.limits
  - https://eel.is/c++draft/version.syn

Implementation details:
- Uses compiler intrinsic `__builtin_is_implicit_lifetime`:
  - llvm#101807
- Tests based on:
    - https://github.com/llvm/llvm-project/blob/d213981c80626698a07b11ce872acba098a863d4/clang/test/SemaCXX/type-traits.cpp#L1989

References:
- Implicit-lifetime
  - Implicit-lifetime types [basic.types.general]/9: https://eel.is/c++draft/basic.types.general
  - Implicit-lifetime class [class.prop]/9: https://eel.is/c++draft/class.prop
- P0593R6 Implicit creation of objects for low-level object manipulation: https://wg21.link/P0593R6
- P1010R1 Container support for implicit lifetime types: https://wg21.link/P1010R1
- P0593R6 Implicit creation of objects for low-level object manipulation: https://wg21.link/P0593R6

Closes: llvm#105259
H-G-Hristov added a commit to H-G-Hristov/llvm-project that referenced this issue Aug 31, 2024
Implements P2674R1: https://wg21.link/P2674R1

- https://eel.is/c++draft/type.traits
  - https://eel.is/c++draft/meta.type.synop
  - https://eel.is/c++draft/meta.unary.prop
- https://eel.is/c++draft/support.limits
  - https://eel.is/c++draft/version.syn

Implementation details:
- Uses compiler intrinsic `__builtin_is_implicit_lifetime`:
  - llvm#101807
- Tests based on:
    - https://github.com/llvm/llvm-project/blob/d213981c80626698a07b11ce872acba098a863d4/clang/test/SemaCXX/type-traits.cpp#L1989

References:
- Implicit-lifetime
  - Implicit-lifetime types [basic.types.general]/9: https://eel.is/c++draft/basic.types.general
  - Implicit-lifetime class [class.prop]/9: https://eel.is/c++draft/class.prop
- P0593R6 Implicit creation of objects for low-level object manipulation: https://wg21.link/P0593R6
- P1010R1 Container support for implicit lifetime types: https://wg21.link/P1010R1
- P0593R6 Implicit creation of objects for low-level object manipulation: https://wg21.link/P0593R6

Closes: llvm#105259
H-G-Hristov added a commit to H-G-Hristov/llvm-project that referenced this issue Aug 31, 2024
Implements P2674R1: https://wg21.link/P2674R1

- https://eel.is/c++draft/type.traits
  - https://eel.is/c++draft/meta.type.synop
  - https://eel.is/c++draft/meta.unary.prop
- https://eel.is/c++draft/support.limits
  - https://eel.is/c++draft/version.syn

Implementation details:
- Uses compiler intrinsic `__builtin_is_implicit_lifetime`:
  - llvm#101807
- Tests based on:
    - https://github.com/llvm/llvm-project/blob/d213981c80626698a07b11ce872acba098a863d4/clang/test/SemaCXX/type-traits.cpp#L1989

References:
- Implicit-lifetime
  - Implicit-lifetime types [basic.types.general]/9: https://eel.is/c++draft/basic.types.general
  - Implicit-lifetime class [class.prop]/9: https://eel.is/c++draft/class.prop
- P0593R6 Implicit creation of objects for low-level object manipulation: https://wg21.link/P0593R6
- P1010R1 Container support for implicit lifetime types: https://wg21.link/P1010R1
- P0593R6 Implicit creation of objects for low-level object manipulation: https://wg21.link/P0593R6

Closes: llvm#105259
H-G-Hristov added a commit to H-G-Hristov/llvm-project that referenced this issue Sep 3, 2024
Implements P2674R1: https://wg21.link/P2674R1

- https://eel.is/c++draft/type.traits
  - https://eel.is/c++draft/meta.type.synop
  - https://eel.is/c++draft/meta.unary.prop
- https://eel.is/c++draft/support.limits
  - https://eel.is/c++draft/version.syn

Implementation details:
- Uses compiler intrinsic `__builtin_is_implicit_lifetime`:
  - llvm#101807
- Tests based on:
    - https://github.com/llvm/llvm-project/blob/d213981c80626698a07b11ce872acba098a863d4/clang/test/SemaCXX/type-traits.cpp#L1989

References:
- Implicit-lifetime
  - Implicit-lifetime types [basic.types.general]/9: https://eel.is/c++draft/basic.types.general
  - Implicit-lifetime class [class.prop]/9: https://eel.is/c++draft/class.prop
- P0593R6 Implicit creation of objects for low-level object manipulation: https://wg21.link/P0593R6
- P1010R1 Container support for implicit lifetime types: https://wg21.link/P1010R1
- P0593R6 Implicit creation of objects for low-level object manipulation: https://wg21.link/P0593R6

Closes: llvm#105259
H-G-Hristov added a commit to H-G-Hristov/llvm-project that referenced this issue Sep 3, 2024
Implements P2674R1: https://wg21.link/P2674R1

- https://eel.is/c++draft/type.traits
  - https://eel.is/c++draft/meta.type.synop
  - https://eel.is/c++draft/meta.unary.prop
- https://eel.is/c++draft/support.limits
  - https://eel.is/c++draft/version.syn

Implementation details:
- Uses compiler intrinsic `__builtin_is_implicit_lifetime`:
  - llvm#101807
- Tests based on:
    - https://github.com/llvm/llvm-project/blob/d213981c80626698a07b11ce872acba098a863d4/clang/test/SemaCXX/type-traits.cpp#L1989

References:
- Implicit-lifetime
  - Implicit-lifetime types [basic.types.general]/9: https://eel.is/c++draft/basic.types.general
  - Implicit-lifetime class [class.prop]/9: https://eel.is/c++draft/class.prop
- P0593R6 Implicit creation of objects for low-level object manipulation: https://wg21.link/P0593R6
- P1010R1 Container support for implicit lifetime types: https://wg21.link/P1010R1
- P0593R6 Implicit creation of objects for low-level object manipulation: https://wg21.link/P0593R6

Closes: llvm#105259
philnik777 pushed a commit that referenced this issue Oct 9, 2024
…106870)

Implements P2674R1: https://wg21.link/P2674R1

- https://eel.is/c++draft/type.traits
  - https://eel.is/c++draft/meta.type.synop
  - https://eel.is/c++draft/meta.unary.prop
- https://eel.is/c++draft/support.limits
  - https://eel.is/c++draft/version.syn

Implementation details:
- Uses compiler intrinsic `__builtin_is_implicit_lifetime`:
  - #101807
- Tests based on:
-
https://github.com/llvm/llvm-project/blob/d213981c80626698a07b11ce872acba098a863d4/clang/test/SemaCXX/type-traits.cpp#L1989

References:
- Implicit-lifetime
- Implicit-lifetime types [basic.types.general]/9:
https://eel.is/c++draft/basic.types.general
- Implicit-lifetime class [class.prop]/9:
https://eel.is/c++draft/class.prop
- P0593R6 Implicit creation of objects for low-level object
manipulation: https://wg21.link/P0593R6
- P1010R1 Container support for implicit lifetime types:
https://wg21.link/P1010R1
- P0593R6 Implicit creation of objects for low-level object
manipulation: https://wg21.link/P0593R6

Closes: #105259

---------

Co-authored-by: Hristo Hristov <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
c++23 libc++ libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi. wg21 paper Issues representing the implementation of a WG21 paper
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

2 participants