I am wondering why the sizeof
operator on a template of different types returns results I would not expect.
Given
#include <iostream>
#include <string>
template <class T>
class Item {
public:
T data;
int32_t test;
};
template <class T>
class Q {
public:
Q(){
std::cout << sizeof(T) << " ";
std::cout << sizeof(Item<T>) << " \n";
}
};
int main()
{
Q<int64_t> q1;
Q<int32_t> q2;
Q<char> q3;
}
I would expect an output of
8 12
4 8
1 5
But instead
8 16
4 8
1 8
Why?