Очень часто в форумах приходится встречать рассуждения, о том, какой тип будет иметь то или иное выражение. Решил сделать маленькую заметку в блог, чтобы затем ссылаться на неё.
Пример кода, распечатывающий тип выражения и информацию о нем:
#include <iostream>
using namespace std;
template <typename T>
void PrintTypeInfo(char const* description, T)
{
const type_info &info = typeid(T);
cerr << "\"" << description << "\":"
<< " type = " << info.name()
<< "; sizeof = " << sizeof (T)
<< "; alignof = " << __alignof (T)
<< endl;
}
int _tmain(int, _TCHAR *[])
{
char c1 = 0, c2 = 0;
PrintTypeInfo("char + char", c1 + c2);
}
Результат:
"char + char": type = int; sizeof = 4; alignof = 4