boostorg / boostorg/type_traits
`is_complete` is incorrect for reference types
- Dominant language
- C++
- Stars
- 66
- Forks
- 87
- PR merge metrics
- No merged PRs in 30d
Description
`is_complete::value` is currently defined to be the value of `is_complete::value`. This is incorrect. According to the standard, all lvalue reference types and rvalue reference types are complete types.
In _[basic.types]_:
> A class that has been declared but not defined, an enumeration type in certain contexts (9.6), or an array of unknown bound or of incomplete element type, is an incompletely-defined object type. Incompletely-defined object types and cv void are incomplete types (6.7.1). Objects shall not be defined to have an incomplete type.
References do not fall under any of the above cases and are therefore complete.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by locating the is_complete entry point and any existing tests for reference types. Compare the current is_complete::value and is_complete::value behavior with the standard wording quoted in the issue. Done means both lvalue and rvalue references are treated as complete types and the relevant tests pass.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 38/100