diff --git a/libcxx/include/__functional_03 b/libcxx/include/__functional_03 --- a/libcxx/include/__functional_03 +++ b/libcxx/include/__functional_03 @@ -443,8 +443,15 @@ } // __function +#if !defined(_LIBCPP_DISABLE_DEPRECATION_WARNINGS) && __has_attribute(deprecated) +# define _LIBCPP_DEPRECATED_CXX03_FUNCTION \ + __attribute__((deprecated("Using std::function in C++03 is not supported anymore. Please upgrade to C++11 or later, or use a different type"))) +#else +# define _LIBCPP_DEPRECATED_CXX03_FUNCTION /* nothing */ +#endif + template -class _LIBCPP_TEMPLATE_VIS function<_Rp()> +class _LIBCPP_DEPRECATED_CXX03_FUNCTION _LIBCPP_TEMPLATE_VIS function<_Rp()> { typedef __function::__base<_Rp()> __base; aligned_storage<3*sizeof(void*)>::type __buf_; @@ -723,7 +730,7 @@ #endif // _LIBCPP_NO_RTTI template -class _LIBCPP_TEMPLATE_VIS function<_Rp(_A0)> +class _LIBCPP_DEPRECATED_CXX03_FUNCTION _LIBCPP_TEMPLATE_VIS function<_Rp(_A0)> : public unary_function<_A0, _Rp> { typedef __function::__base<_Rp(_A0)> __base; @@ -1003,7 +1010,7 @@ #endif // _LIBCPP_NO_RTTI template -class _LIBCPP_TEMPLATE_VIS function<_Rp(_A0, _A1)> +class _LIBCPP_DEPRECATED_CXX03_FUNCTION _LIBCPP_TEMPLATE_VIS function<_Rp(_A0, _A1)> : public binary_function<_A0, _A1, _Rp> { typedef __function::__base<_Rp(_A0, _A1)> __base; @@ -1283,7 +1290,7 @@ #endif // _LIBCPP_NO_RTTI template -class _LIBCPP_TEMPLATE_VIS function<_Rp(_A0, _A1, _A2)> +class _LIBCPP_DEPRECATED_CXX03_FUNCTION _LIBCPP_TEMPLATE_VIS function<_Rp(_A0, _A1, _A2)> { typedef __function::__base<_Rp(_A0, _A1, _A2)> __base; aligned_storage<3*sizeof(void*)>::type __buf_;