+2010-11-04 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/46303
+ * testsuite/30_threads/call_once/constexpr.cc: Add missing dg-require
+ directives.
+ * testsuite/30_threads/mutex/cons/constexpr.cc: Likewise.
+ * testsuite/30_threads/once_flag/cons/constexpr.cc: Likewise.
+
+2010-11-04 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/ratio (ratio_add, ratio_subtract, ratio_multiply,
+ ratio_divide): Declare the data members constexpr.
+ * testsuite/20_util/ratio/requirements/constexpr_data.cc: Extend.
+
2010-11-03 Benjamin Kosnik <bkoz@redhat.com>
* include/std/tuple (tuple): Make default constructors constexpr.
__safe_multiply<_R2::num, (_R1::den / __gcd)>::value>::value,
__safe_multiply<_R1::den, (_R2::den / __gcd)>::value> type;
- static const intmax_t num = type::num;
- static const intmax_t den = type::den;
+ static constexpr intmax_t num = type::num;
+ static constexpr intmax_t den = type::den;
};
template<typename _R1, typename _R2>
- const intmax_t ratio_add<_R1, _R2>::num;
+ constexpr intmax_t ratio_add<_R1, _R2>::num;
template<typename _R1, typename _R2>
- const intmax_t ratio_add<_R1, _R2>::den;
+ constexpr intmax_t ratio_add<_R1, _R2>::den;
/// ratio_subtract
template<typename _R1, typename _R2>
_R1,
ratio<-_R2::num, _R2::den>>::type type;
- static const intmax_t num = type::num;
- static const intmax_t den = type::den;
+ static constexpr intmax_t num = type::num;
+ static constexpr intmax_t den = type::den;
};
template<typename _R1, typename _R2>
- const intmax_t ratio_subtract<_R1, _R2>::num;
+ constexpr intmax_t ratio_subtract<_R1, _R2>::num;
template<typename _R1, typename _R2>
- const intmax_t ratio_subtract<_R1, _R2>::den;
+ constexpr intmax_t ratio_subtract<_R1, _R2>::den;
/// ratio_multiply
template<typename _R1, typename _R2>
__safe_multiply<(_R1::den / __gcd2),
(_R2::den / __gcd1)>::value> type;
- static const intmax_t num = type::num;
- static const intmax_t den = type::den;
+ static constexpr intmax_t num = type::num;
+ static constexpr intmax_t den = type::den;
};
template<typename _R1, typename _R2>
- const intmax_t ratio_multiply<_R1, _R2>::num;
+ constexpr intmax_t ratio_multiply<_R1, _R2>::num;
template<typename _R1, typename _R2>
- const intmax_t ratio_multiply<_R1, _R2>::den;
+ constexpr intmax_t ratio_multiply<_R1, _R2>::den;
/// ratio_divide
template<typename _R1, typename _R2>
_R1,
ratio<_R2::den, _R2::num>>::type type;
- static const intmax_t num = type::num;
- static const intmax_t den = type::den;
+ static constexpr intmax_t num = type::num;
+ static constexpr intmax_t den = type::den;
};
template<typename _R1, typename _R2>
- const intmax_t ratio_divide<_R1, _R2>::num;
+ constexpr intmax_t ratio_divide<_R1, _R2>::num;
template<typename _R1, typename _R2>
- const intmax_t ratio_divide<_R1, _R2>::den;
+ constexpr intmax_t ratio_divide<_R1, _R2>::den;
/// ratio_equal
template<typename _R1, typename _R2>