#定义 造元数据实现(构名,...)\
    //根据变长参数,用元组来保存内部结构
静 动 反成(构名 常&){\
    构 反射成员{\
        常式 推导()静 应现(){\//这里.
            中 造元组(__变长实参__);\
        }\
        用 型=;\
        用 大小类型=整常<,取参个数(__变长实参__)>;\//参数个数
        常式 静 串视 名(){中 串视(#构名,型长(#构名)-1);}\//为啥要减1?
        常式 静 整 值(){中 大小类型::;}\
        常式 静 数组<串视,大小类型::>数组(){中 数组_##构名;}\
    };\
    中 反射成员{};\
}//其实就是(类的实例)

#定义 造元数据(构名,N,...)\
    常式 内联 数组<串视,N>数组_##构名={扩展宏(宏连接(常串,N)(__变长实参__))};\//生成串.隐藏了.
    造元数据实现(构名,造参列表(N,&构名::字段,__变长实参__))//展开了.不如1个for来替换掉.
}


这里更详细解释
adl查找时,也会查找T类型的空间.

using type = decltype(to_extend(t));        // 探测有没有对应的to_extend函数,ADL查找保证

因为to_extend(t)是一系列类型的函数.t是挨个在中生成的.即用一堆函数,而不是一个模板特化.然后内部再返回类型(伏地魔).