Created on 2015-10-22.00:00:00 last changed 121 months ago
Consider:
template <class T>
using Fn = void (*)(T);
struct A
{
template <class T>
operator Fn<T>();
};
int main()
{
A()(42);
}
12.2.2.2.3 [over.call.object] describes how conversion functions to pointer/reference to
function work in overload resolution, but is silent about conversion
function templates. Generalizing the wording there, in this case we
could generate a surrogate conversion template
template <class T>
void /surrogate/ (Fn<T> f, T a) { return f(a); }
which would work as expected. But it seems that implementations don't
actually do this currently.
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2015-10-22 00:00:00 | admin | create | |