Według cppreference części podstawowe wyrażenia stałe punktu 19) operatora odejmowanie dwóch wskaźników jest nielegalne stałej ekspresji aż C++ 14. Czy mogę założyć, że poniższy kod jest zgodny z prawem C++ 17 lub czy ta interpretacja jest nadużyciem?Czy różnica między dwoma wskaźnikami jest stała i stała C++ 17?
int X, Y;
template <long long V>
struct S { };
int main() {
S<&X - &Y> s;
(void)s;
}
lub dwa zerowe wskaźniki IIRC, który również nie jest z pewnością walizka. – hvd
Więc zbytnio zinterpretowałem sformułowanie? Tak, testowałem to również, ale nauczyłem się, że fakt, że coś nie kompiluje się w danym kompilatorze, tak naprawdę nie jest tak naprawdę to nie jest legalne stąd pytanie :) –
@hvd, nie pamiętam żadnego wyjątku dla wskaźników zerowych dotyczących odejmowania , ale moja pamięć może mnie zawieść. Czy byłbyś tak miły, aby podać ofertę? – SergeyA