Как выяснить тип параметров шаблона с помощью VS Debugger? - PullRequest
3 голосов
/ 30 ноября 2011

Я имею дело с сильно шаблонным кодом, и теперь мне нужно выяснить тип параметров шаблона.

В следующем коде, который я упростил, Как вы можете отладить, чтобы узнать, какой тип каждого T зависит от main (), который будет инициировать A с int, double или любым другимtype.

template <class T>
class A // 1
{
public:
    typedef T Type;
};

template <class T>
class A<T*> // 2
{
public:
    typedef T Type;
};

template <class T> 
class A<T**> // 3
{
pbulic:
    typedef T Type;
};

Я пытался использовать окно Watch , но не думаю, что оно может помочь мне узнать, каков действительный тип T.

Если T - int *, Для меня будет лучшим увидеть код в форме шаблона шаблонного кода, который выглядит следующим образом:

 class A // 1
 {
  public:
    typedef int* Type;
 };

Заранее спасибо.

1 Ответ

5 голосов
/ 30 ноября 2011

Возможно, я неправильно понимаю, что вы хотите, но (даже в скрипучем старом MSVS 2003) окно Watch (или Auto) делает это для меня приятно через столбец «Тип»:

MSVS 2003 Auto window

Обратите внимание, что внутри программы T может принимать много разных типов для разных экземпляров (например, у меня три в моей маленькой программе на рисунке), поэтому нет смысла спрашивать, какой тип T находится снаружи контекст конкретной реализации.

Если вы шагаете по методу шаблонного класса, а также проверяете тип this в окне Watch, вы можете увидеть его в стеке вызовов:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...