* include/ext/pointer.h (_Pointer_adapter): Define operators for
pointer arithmetic using long long offsets.
* testsuite/ext/ext_pointer/1.cc: Test pointer arithmetic using
long long values.
From-SVN: r263976
+2018-08-30 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/ext/pointer.h (_Pointer_adapter): Define operators for
+ pointer arithmetic using long long offsets.
+ * testsuite/ext/ext_pointer/1.cc: Test pointer arithmetic using
+ long long values.
+
2018-08-29 Jonathan Wakely <jwakely@redhat.com>
PR libstdc++/31413
_CXX_POINTER_ARITH_OPERATOR_SET(unsigned int);
_CXX_POINTER_ARITH_OPERATOR_SET(long);
_CXX_POINTER_ARITH_OPERATOR_SET(unsigned long);
+#ifdef _GLIBCXX_USE_LONG_LONG
+ _CXX_POINTER_ARITH_OPERATOR_SET(long long);
+ _CXX_POINTER_ARITH_OPERATOR_SET(unsigned long long);
+#endif
// Mathematical Manipulators
inline _Pointer_adapter&
VERIFY(bPtr3 == aPtr);
}
+// Check that long long values can be used for pointer arithmetic.
+void test05()
+{
+ A a[2] = { 1, 2 };
+ A_pointer p = a;
+ A_pointer q = p + 0ull;
+ VERIFY( p == q );
+ q += 0ll;
+ VERIFY( p == q );
+ q += 1ll;
+ VERIFY( q->i == p[1ll].i );
+}
+
int main()
{
test01();
test02();
test03();
test04();
+ test05();
return 0;
}