This patch deprecates almost all C++03 extensions offered by <functional>. These extensions started as fallback implementations for compilers without variadic template support.
Since compiler support is no longer an issue I would like to remove these features. The end goal is to remove both <__functional_03> and <__functional_base_03> entirely.
The features this patch deprecates are:
- std::function
- std::mem_fn
- std::reference_wrapper::operator()
Although reference_wrapper is C++11 only I chose to only deprecate the variadic call operator. The rest of the class will remain as an extension.
Killing these features allows us to kill the C++03 implementation of INVOKE and it's related traits, which have a poor QoI with a large maintenance burden.