Здравствуйте, Kerbadun, Вы писали:
K>Здравствуйте, Aleх, Вы писали:
A>>В каких случаях typeid(...).name() возвращает
A>>A>>struct ?? :: ??
A>>
A>>Я подозреваю, тогда, когда длина имени слишком большая. Но никакой информации подтверждающий мои предположения я не нашел.
K>Может, айдишники русскоязычные?
msvc2008
struct _1024(){}; typeid выводит 1031 символ
name + struct\x20 а вот уже struct _4096(){};
пишет
fatal error C1064: compiler limit : token overflowed internal buffer
#define _1() h
#define _4() _1() ## _1() ## _1() ## _1()
#define _16() _4() ## _4() ## _4() ## _4()
#define _64() _16() ## _16() ## _16() ## _16()
#define _256() _64() ## _64() ## _64() ## _64()
#define _1024() _256() ## _256() ## _256() ## _256()
#define _4096() _1024() ## _1024() ## _1024() ## _1024()
#define _16384() _4096() ## _4096() ## _4096() ## _4096()
#define _65536() _16384() ## _16384() ## _16384() ## _16384()
struct _4096(){};
int main(){
puts(typeid(_4096()).name());
printf("%lu\n", strlen(typeid(_4096()).name()));
}