Hi,
I went through the items noticed by Nico in the paper and voted to the
wp, and we are missing only the following, I think we can do the change now.
Tested x86_64-linux.
Thanks,
Paolo.
/////////////////////////
2013-04-22 Paolo Carlini <paolo.carl...@oracle.com>
N3669
* include/std/complex (complex<float>::real, complex<float>::imag,
complex<double>::real, complex<double>::imag,
complex<long double>::real, complex<long double>::imag): Declare
as const member functions.
* include/std/type_traits (integral_constant<>::operator value_type):
Likewise.
Index: include/std/complex
===================================================================
--- include/std/complex (revision 198124)
+++ include/std/complex (working copy)
@@ -1066,11 +1066,11 @@
// DR 387. std::complex over-encapsulated.
__attribute ((__abi_tag__ ("cxx11")))
constexpr float
- real() { return __real__ _M_value; }
+ real() const { return __real__ _M_value; }
__attribute ((__abi_tag__ ("cxx11")))
constexpr float
- imag() { return __imag__ _M_value; }
+ imag() const { return __imag__ _M_value; }
#else
float&
real() { return __real__ _M_value; }
@@ -1217,11 +1217,11 @@
// DR 387. std::complex over-encapsulated.
__attribute ((__abi_tag__ ("cxx11")))
constexpr double
- real() { return __real__ _M_value; }
+ real() const { return __real__ _M_value; }
__attribute ((__abi_tag__ ("cxx11")))
constexpr double
- imag() { return __imag__ _M_value; }
+ imag() const { return __imag__ _M_value; }
#else
double&
real() { return __real__ _M_value; }
@@ -1369,11 +1369,11 @@
// DR 387. std::complex over-encapsulated.
__attribute ((__abi_tag__ ("cxx11")))
constexpr long double
- real() { return __real__ _M_value; }
+ real() const { return __real__ _M_value; }
__attribute ((__abi_tag__ ("cxx11")))
constexpr long double
- imag() { return __imag__ _M_value; }
+ imag() const { return __imag__ _M_value; }
#else
long double&
real() { return __real__ _M_value; }
Index: include/std/type_traits
===================================================================
--- include/std/type_traits (revision 198124)
+++ include/std/type_traits (working copy)
@@ -59,7 +59,7 @@
static constexpr _Tp value = __v;
typedef _Tp value_type;
typedef integral_constant<_Tp, __v> type;
- constexpr operator value_type() { return value; }
+ constexpr operator value_type() const { return value; }
};
template<typename _Tp, _Tp __v>