class AcGeVector3d
{
public:
    double x,y,z;
};
inline double*
asDblArray(const AcGeVector3d& vec)
{
    static_assert(alignof(AcGeVector3d) == alignof(double[3]), "AcGeVector3d) == alignof(double[3])");
    static_assert(alignof(AcGeVector3d*) == alignof(double*), "AcGeVector3d*) == alignof(double*)");
    static_assert(sizeof(AcGeVector3d) == sizeof(double[3]), "AcGeVector3d) == sizeof(double[3])");
//#pragma clang diagnostic push
//#pragma clang diagnostic ignored "-Wcast-align"
    return (double*)&vec;
//#pragma clang diagnostic pop
}
bool test(const AcGeVector3d& n)
{
    double* p = asDblArray(n);
    return p != nullptr;
}
