This is an archive of the discontinued LLVM Phabricator instance.

Deprecate C++03 <functional> Extensions: std::function, std::mem_fn and more
AbandonedPublic

Authored by EricWF on Apr 18 2016, 5:04 PM.

Details

Reviewers
mclow.lists
Summary

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.

Diff Detail

Event Timeline

EricWF updated this revision to Diff 54139.Apr 18 2016, 5:04 PM
EricWF retitled this revision from to Deprecate C++03 <functional> Extensions: std::function, std::mem_fn and more.
EricWF updated this object.
EricWF added a reviewer: mclow.lists.
EricWF added a subscriber: cfe-commits.
EricWF abandoned this revision.Apr 23 2016, 7:24 PM

Abandoning after advice from @mclow.lists