Created on 2025-11-21.00:00:00 last changed 2 weeks ago
[ 2025-11-26; Jonathan comments. ]
[res.on.functions] already makes it undefined behaviour to
instantiate `tuple` with an incomplete type, which includes `void` and `int[]`.
It would be better if it was ill-formed not undefined though, and that doesn't
say anything about tuple<int()> or
tuple<AbstractClassType>.
Any restrictions should only apply when `tuple` is instantiated,
not just when it's declared, as that would prevent using it as a typelist.
We might need to specify that `tuple_size` and `tuple_element` can be
instantiated with incomplete types that are specializations of `tuple`,
because otherwise [res.on.functions] makes that undefined.
`tuple_size` and `tuple_element` don't need a complete `tuple` type
to give an answer, and they don't need to instantiate a `tuple` type.
So tuple_element_t<0, tuple<void>> should work.
We do not say that instantiating types like std::tuple<void>
or std::tuple<int()> won't work.
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2025-11-26 19:05:56 | admin | set | messages: + msg15763 |
| 2025-11-21 00:00:00 | admin | create | |