Created on 2011-12-17.00:00:00 last changed 2 days ago
Additional notes (March, 2025)
Issue 1395 covers only function parameter packs, but the example in the present issue does not have any. Reopening the issue for further consideration. See also 13.10.3.6 [temp.deduct.type] bullet 9.1.
CWG 2022-11-11
Resolved by issue 1395; see the special rule about trailing packs in 13.10.3.5 [temp.deduct.partial] paragraph 11.
Notes from the October, 2012 meeting:
It is possible that 13.7.6.3 [temp.spec.partial.order] may resolve this problem.
With the new core rules in regard to variadic pack expansions the library specification of the traits template common_type is now broken, the reason is that it is defined as a series of specializations of the primary template
template <class ...T> struct common_type;
The broken one is this pair:
template <class T, class U> struct common_type<T, U> { typedef decltype(true ? declval<T>() : declval<U>()) type; }; template <class T, class U, class... V> struct common_type<T, U, V...> { typedef typename common_type<typename common_type<T, U>::type, V...>::type type; };
With the new rules both specializations would now be ambiguous for an instantiation like common_type<X, Y>.
(See also issue 1395.)
History | |||
---|---|---|---|
Date | User | Action | Args |
2025-03-02 07:17:22 | admin | set | messages: + msg7973 |
2025-03-02 07:17:22 | admin | set | status: c++17 -> open |
2022-11-20 07:54:16 | admin | set | messages: + msg7033 |
2022-11-20 07:54:16 | admin | set | status: open -> c++17 |
2022-02-18 07:47:23 | admin | set | status: drafting -> open |
2012-11-03 00:00:00 | admin | set | messages: + msg4104 |
2012-11-03 00:00:00 | admin | set | status: open -> drafting |
2011-12-17 00:00:00 | admin | create |