根据 cppreference 核心常量表达式部分 19) 两个指针之间的减法运算符不是合法的常量表达式直到 c++14。我可以假设以下代码是合法的 c++17 代码还是这种解释是一种滥用?
int X, Y;
template <long long V>
struct S { };
int main() {
S<&X - &Y> s;
(void)s;
}
最佳答案
这个问题没有实际意义。指针算法只定义在属于同一个数组的指针上,当然不是这样。所以,上面的代码不是合法的 C++,事实上,无法使用我可用的编译器进行编译。
关于c++ - 两个指针合法的 c++17 常量表达式之间的区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41451930/