This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: implementation & optimization of std::function with and without allocator


On Sat, 25 Jan 2014, Jonathan Wakely wrote:

That isn't similar and the use of std::array is irrelevant.
std::function involves type erasure, usually dynamic allocation, and
indirection through function pointers. If you don't use std::function
then none of that needs to be optimised away.

Indeed. But optimizing the code generated when std::function is used seems a worthy goal to me.

#include <functional>

int f(int i){return i-1;}
int main(){
  std::function<int(int)> h=f;
  return h(1);
}


Simplifying this to just:

int main(){return 0;}

should be achievable (and clang manages it, using either libstdc++ or libc++). Filing some new PRs may be in order, if there aren't already a few about this.

--
Marc Glisse


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]