Код: Выделить всё
struct T1 { struct U { int i; }; };
struct T2 { };
struct U1 {};
struct U2 {};
struct B {
using T = T1;
using U = U1;
operator U1 T1::*();
operator U1 T2::*();
operator U2 T1::*();
operator U2 T2::*();
};
template
int g() {
using U = U2;
X().operator U T::*(); // #1, searches for T in the scope of X first
X().operator U decltype(T())::*(); // #2
return 0;
}
int x = g(); // #1 calls B::operator U1 T1::*
// #2 calls B::operator U1 T2::*
It shocks me so that I made an experiment by adding codes below and compiling it:
#include
B::operator U1 T1::*()
{
std::cout
Подробнее здесь: https://stackoverflow.com/questions/795 ... ork-in-gcc
Мобильная версия