template < typename R, typename A >
void F(R (A))
{
}
struct R;
struct A { operator R(); };
struct R { R(A) {} };
A::operator R()
{ return R(* this); }
R g(A a)
{
return R(a);
}
int main()
{
A a;
R r(a);
F< R, A >(a); // (1)
F< R, A >(r); // (2)
F< R, A >(g); // (3)
return 0;
}
Ввійдіть щоб вподобати
Ввійдіть щоб прокоментувати