EricWF updated this revision to Diff 33235.
EricWF added a comment.
Address @mclow.lists note about consistency.
http://reviews.llvm.org/D11553
Files:
include/__functional_base
include/__functional_base_03
include/functional
test/std/utilities/function.objects/refwrap/refwrap.const/type_ctor.fail.cpp
test/std/utilities/function.objects/refwrap/refwrap.helpers/ref_1.fail.cpp
Index: test/std/utilities/function.objects/refwrap/refwrap.helpers/ref_1.fail.cpp
===
--- test/std/utilities/function.objects/refwrap/refwrap.helpers/ref_1.fail.cpp
+++ test/std/utilities/function.objects/refwrap/refwrap.helpers/ref_1.fail.cpp
@@ -15,6 +15,8 @@
// Don't allow binding to a temp
+// XFAIL: c++98, c++03
+
#include functional
struct A {};
Index: test/std/utilities/function.objects/refwrap/refwrap.const/type_ctor.fail.cpp
===
--- test/std/utilities/function.objects/refwrap/refwrap.const/type_ctor.fail.cpp
+++ test/std/utilities/function.objects/refwrap/refwrap.const/type_ctor.fail.cpp
@@ -13,6 +13,8 @@
// reference_wrapper(T) = delete;
+// XFAIL: c++98, c++03
+
#include functional
#include cassert
Index: include/functional
===
--- include/functional
+++ include/functional
@@ -1262,22 +1262,102 @@
#else
template class _A0
+_LIBCPP_INLINE_VISIBILITY
typename __invoke_return0type, _A0::type
operator() (_A0 __a0) const {
return __invoke(__f_, __a0);
}
+template class _A0
+_LIBCPP_INLINE_VISIBILITY
+typename __invoke_return0type, _A0 const::type
+operator() (_A0 const __a0) const {
+return __invoke(__f_, __a0);
+}
+
template class _A0, class _A1
+_LIBCPP_INLINE_VISIBILITY
typename __invoke_return1type, _A0, _A1::type
operator() (_A0 __a0, _A1 __a1) const {
return __invoke(__f_, __a0, __a1);
}
+template class _A0, class _A1
+_LIBCPP_INLINE_VISIBILITY
+typename __invoke_return1type, _A0 const, _A1::type
+operator() (_A0 const __a0, _A1 __a1) const {
+return __invoke(__f_, __a0, __a1);
+}
+
+template class _A0, class _A1
+_LIBCPP_INLINE_VISIBILITY
+typename __invoke_return1type, _A0, _A1 const::type
+operator() (_A0 __a0, _A1 const __a1) const {
+return __invoke(__f_, __a0, __a1);
+}
+
+template class _A0, class _A1
+_LIBCPP_INLINE_VISIBILITY
+typename __invoke_return1type, _A0 const, _A1 const::type
+operator() (_A0 const __a0, _A1 const __a1) const {
+return __invoke(__f_, __a0, __a1);
+}
+
template class _A0, class _A1, class _A2
+_LIBCPP_INLINE_VISIBILITY
typename __invoke_return2type, _A0, _A1, _A2::type
operator() (_A0 __a0, _A1 __a1, _A2 __a2) const {
return __invoke(__f_, __a0, __a1, __a2);
}
+
+template class _A0, class _A1, class _A2
+_LIBCPP_INLINE_VISIBILITY
+typename __invoke_return2type, _A0 const, _A1, _A2::type
+operator() (_A0 const __a0, _A1 __a1, _A2 __a2) const {
+return __invoke(__f_, __a0, __a1, __a2);
+}
+
+template class _A0, class _A1, class _A2
+_LIBCPP_INLINE_VISIBILITY
+typename __invoke_return2type, _A0, _A1 const, _A2::type
+operator() (_A0 __a0, _A1 const __a1, _A2 __a2) const {
+return __invoke(__f_, __a0, __a1, __a2);
+}
+
+template class _A0, class _A1, class _A2
+_LIBCPP_INLINE_VISIBILITY
+typename __invoke_return2type, _A0, _A1, _A2 const::type
+operator() (_A0 __a0, _A1 __a1, _A2 const __a2) const {
+return __invoke(__f_, __a0, __a1, __a2);
+}
+
+template class _A0, class _A1, class _A2
+_LIBCPP_INLINE_VISIBILITY
+typename __invoke_return2type, _A0 const, _A1 const, _A2::type
+operator() (_A0 const __a0, _A1 const __a1, _A2 __a2) const {
+return __invoke(__f_, __a0, __a1, __a2);
+}
+
+template class _A0, class _A1, class _A2
+_LIBCPP_INLINE_VISIBILITY
+typename __invoke_return2type, _A0 const, _A1, _A2 const::type
+operator() (_A0 const __a0, _A1 __a1, _A2 const __a2) const {
+return __invoke(__f_, __a0, __a1, __a2);
+}
+
+template class _A0, class _A1, class _A2
+_LIBCPP_INLINE_VISIBILITY
+typename __invoke_return2type, _A0, _A1 const, _A2 const::type
+operator() (_A0 __a0, _A1 const __a1, _A2 const __a2) const {
+return __invoke(__f_, __a0, __a1, __a2);
+}
+
+template class _A0, class _A1, class _A2
+_LIBCPP_INLINE_VISIBILITY
+typename __invoke_return2type, _A0 const, _A1 const, _A2 const::type
+operator() (_A0 const __a0, _A1 const __a1, _A2 const __a2) const {
+return __invoke(__f_, __a0, __a1, __a2);
+}
#endif
};
Index: include/__functional_base_03
===
--- include/__functional_base_03
+++