Данные о членах должны быть открытыми, поэтому используйте public или struct
template <typename T>
class SomeClass {
public:
T t;
};
...
offsetof(SomeClass<double>, t);
Обратите внимание, что препроцессор всегда пытается разделить аргументы через запятую, поэтому в качестве обходного пути используйте typedef.
#include <cstddef>
template <typename T1, typename T2>
class SomeClass {
public:
T1 t1;
T2 t2;
};
int main(int,char**) {
typedef SomeClass<double, float> SomeClassDoubleFloat;
offsetof(SomeClassDoubleFloat, t2);
return 0;
}
edit: извините, я неправильно понял ваш вопрос, поэтому я изменил ответ + lt & gt