C++17 标准说:
非类型模板参数的模板参数应为转换后的常量表达式...
尽管
常量表达式的值不应该是地址
- 字符串文字
- 一个子对象
- 其他一些例外...
根据我的理解,字符串文字例外背后的基本原理是,根据实现,A<"abc">
不同翻译单元中的出现可能会导致不同的实例化(因为字符串文字具有内部链接),或者可能是字符串的地址文字是在链接时定义的(因为字符串文字存储在一些特殊的只读存储器中)。
第一个问题是我对字符串文字例外背后的基本原理的理解是否正确?
第二个问题是:具有静态存储持续时间的对象的子对象例外背后的基本原理是什么?我怀疑问题可能是对齐的,但是对齐是在编译时完成的,对吧?