Nach cppreference Abschnitt konstanter Kern Ausdrücke Punkt 19) eine Subtraktion Operator zwischen zwei Zeigern ist nicht legal konstanter Ausdruck bis C++ 14. Kann ich davon ausgehen, dass folgender Code legal C++ 17 Code ist oder ist diese Interpretation ein Missbrauch?Ist der Unterschied zwischen zwei Zeigern legal C++ 17 konstanter Ausdruck?
int X, Y;
template <long long V>
struct S { };
int main() {
S<&X - &Y> s;
(void)s;
}
Oder zwei Nullzeiger IIRC, die auch sicherlich nicht der Fall. – hvd
Also habe ich den Wortlaut überinterpretiert? Yep Ich testete es auch, aber ich habe gelernt, dass die Tatsache, dass etwas nicht kompiliert in gegebenen Compiler nicht wirklich meen es eigentlich nicht legal ist daher die Frage :) –
@hvd, ich erinnere mich nicht an irgendeine Ausnahme für Nullzeiger in Bezug auf die Subtraktion , aber meine Erinnerung kann mich verfehlen. Wären Sie so freundlich, ein Angebot zu machen? – SergeyA