Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7015397
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 27, 20262026-05-27T22:38:49+00:00 2026-05-27T22:38:49+00:00

In my C++ application (using Visual Studio 2010), I need to store an std::function,

  • 0

In my C++ application (using Visual Studio 2010), I need to store an std::function, like this:

class MyClass
   {
   public:
      typedef std::function<int(int)> MyFunction;
      MyClass (Myfunction &myFunction);
   private:
      MyFunction m_myFunction;    // Should I use this one?
      MyFunction &m_myFunction;   // Or should I use this one?
   };

As you can see, I added the function argument as a reference in the constructor.

But, what is the best way to store the function in my class?

  • Can I store the function as a reference since std::function is just a function-pointer and the ‘executable code’ of the function is guaranteed to stay in memory?
  • Do I have to make a copy in case a lambda is passed and the caller returns?

My gut feeling says that it’s safe to store a reference (even a const-reference). I expect the compiler to generate code for the lambda at compile time, and keep this executable code in ‘virtual’ memory while the application is running. Therefore the executable code is never ‘deleted’ and I can safely store a reference to it. But is this really true?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-27T22:38:50+00:00Added an answer on May 27, 2026 at 10:38 pm

    Can I store the function as a reference since std::function is just a function-pointer and the ‘executable code’ of the function is guaranteed to stay in memory?

    std::function is very much not just a function pointer. It’s a wrapper around an arbitrary callable object, and manages the memory used to store that object. As with any other type, it’s safe to store a reference only if you have some other way to guarantee that the referred object is still valid whenever that reference is used.

    Unless you have a good reason for storing a reference, and a way to guarantee that it remains valid, store it by value.

    Passing by const reference to the constructor is safe, and probably more efficient than passing a value. Passing by non-const reference is a bad idea, since it prevents you from passing a temporary, so the user can’t directly pass a lambda, the result of bind, or any other callable object except std::function<int(int)> itself.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I am using visual studio 2010, my application has a multiu layer architect, MainUI,
We are developing a EDI application using BizTalk 2010 and Visual Studio 2010. Because
I am developing an MVC3 application using Visual Studio 2010. I have an aspx
I wrote an application that installs using the Visual Studio 2010 Setup Project. As
I wrote an application using Visual Studio 2010 that I configured to run using
I've developed an application using Visual Studio 2010, which by default compiles to the
I'm creating an application in C# using Visual Studio 2010/.NET 4.0. For part of
We are developing C# 4.0 windows based application using visual studio 2010. Now we
I am using Visual Studio 2010 to build an application in C++. I have
I'm using Visual studio 2010 and .NET Framework 4.0. Code: public void LoginTo(string username,

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.