> template<class T> > inline string typeName( const T& = T() ) > { > return typeid( T ).name(); > } > > Только эту функцию уже не перегрузишь. Параметр по > умолчанию не дает.
Пардон, перегрузке функция все же подлежит. Я ошибся.
у меня все функции инстанцируются с double. Уберите комментарии 1 и 3. будет вечный A<bool>. Раскомментируйте 2. Все ОК. А теперь, внимание, вопрос: как, принимая во внимание весь этот цирк, ПЕРЕГРУЗИТЬ шаблонную функцию для определенного типа, скажем, чтоб для A<bool> возвернуть не "class A<bool>", что по умолчанию, а "хелло, Билли"? ОЧЕНЬ занимательные экперименты получаются... :((
спасибо
[C++] HE bug.09.07.01 22:41 Автор: + <Mikhail> Статус: Elderman Отредактировано 09.07.01 22:53 Количество правок: 1
Eto ne bug . copmiler sozdaet tolko odnu instance etoii fuction. I dlia raznyh typov argumentov proishodit konversia tipa, tak kak v etom primere net argumentov to ni kakoi konversii ne proishodit a ispolnietsa code functii kotoraiy byka pervaia naidene compilerom v nashem sluchae eto typeName<double>() , pomeniai etu function s typeName<char>() mestami i vse stanet aisno.
A eche sdelai tak:
template<class T>
inline string typeName( T t)
{
return typeid( T ).name();
}
Только эту функцию уже не перегрузишь. Параметр по умолчанию не дает.
Ладно, а что делать с более сложными классами? Создавать экземпляры классов (возможно, достаточно громоздкие) только для того, чтоб узнать его имя??
Какая нафиг конверсия типов может присутствовать в случае, когда я более чем ЯВНО указываю тип инстанцирования? Что за мудрствования со стороны компилятора?
К слову, Borland C++ Builder такой наглости себе не позволяет. Тот же код работает под ним, как ожидается...
[C++] [C++] HE bug.10.07.01 21:31 Автор: + <Mikhail> Статус: Elderman
Ty krichal chto eto bug , tak bot eto ne bug i I tebe ob`iasnil pochemu. My govorili pro MS compiler na drugih ne znau (ne uduvlush esli u BORLAND po drugomu). Voobche vse etu sluchaii vsegda opisanu v HELP. Tal chto rekomenduu pochache tuda zagliadyvat`, delnye vechi inogda mozno prochitat`.
[C++] [C++] HE bug.10.07.01 13:53 Автор: Yehor Статус: Незарегистрированный пользователь
> template<class T> > inline string typeName( const T& = T() ) > { > return typeid( T ).name(); > } > > Только эту функцию уже не перегрузишь. Параметр по > умолчанию не дает.
Пардон, перегрузке функция все же подлежит. Я ошибся.
В Мастайском дебугере GetPixel выдает значение цвета только для 16К-цветных контекстов. Я целый год был убежден, что зту ф-ция поддерживается только в 16К-цветных режимах, завалил из-за этого ценный проект. А потом, случайно в ВинАйсе увидел, как 8-битный контекст лихо возвращает пикселы и строки... Меня чуть Кондрат не хватил! Qwertyuiёб! (В смысле Ёпрст)