Поиск источника ошибки в шаблоне
С++ Builder XE2 не показывает настоящую причину ошибки в шаблоне. Тыкает в сам шаблон, а из какого места кода происходит создание экземпляра шаблона - молчит. Если кода много - искать долго.
Код:
//-----------------------------------
template<typename T>
struct A
{
T fn() { return( 1 ); } /*ошибка из-за второй строки ::tmain(...)*/
};
int _tmain(int argc, _TCHAR* argv[])
{
A<int>().fn(); /*ok*/
A<int*>().fn(); /*ошибка здесь на самом деле, но Builder молчит*/
return 0;
}
//-----------------------------------
template<typename T>
struct A
{
T fn() { return( 1 ); } /*ошибка из-за второй строки ::tmain(...)*/
};
int _tmain(int argc, _TCHAR* argv[])
{
A<int>().fn(); /*ok*/
A<int*>().fn(); /*ошибка здесь на самом деле, но Builder молчит*/
return 0;
}
//-----------------------------------
Можно как-нибудь заставить Builder говорить точнее, откуда экземпляр шаблон был создан?
Спасибо.
Например:
Код:
T fn() { return( (T)1 ); }
Указывает на шаблон то он правильно.
Только вот ситуация.
В коде разбросана сотня созданий экземпляров шаблонов.
Только один из них неправильный.
Как его найти? Если builder указывает не следствие, а не на причину.
Чуть уточню.
Извиняюсь, что не сразу.
Иерархию разбора исходника видно в 'Full parser context' сообщения об ошибке, но так только 6 строк в основном прогулка по *.h, ссылок на *.cpp нет.
Можно ли увеличить количество выводимых сообщений, чтобы дойти до источника ошибки?