Здравствуйте, kov_serg, Вы писали:
_>>>Хотелось шаблон параметризировать смещенем поля структуры
V>>https://en.cppreference.com/w/cpp/types/offsetof
_>Не. Надо &Type::field -> offset
_>_>get_offset<&Type::field>();
_>
Так ведь указатель на член -- это же не смещение. Т.е. смещение для одного и того же члена может быть разным в зависимости от объекта, к которому затем этот указатель применяется:
#include <iostream>
struct A {
int m_a{};
};
struct B : public A {
int m_b{};
};
struct C {
int m_c{};
};
struct D : C, A {
int m_d{};
};
int main()
{
using FieldPtr = int A::*;
B b;
b.m_a = 1;
D d;
d.m_a = 2;
FieldPtr p1 = &A::m_a;
std::cout << "B: " << b.*p1 << ", offsetof: " << offsetof(B, m_a) << std::endl;
std::cout << "D: " << d.*p1 << ", offsetof: " << offsetof(D, m_a) << std::endl;
}