title: Difference between capturing and passing an argument in lambda functions
body: <p>I understand the lambda function and the purpose of it in c++ 11. But i do not understand the difference between "Capturing the value" and "Passing an argument". 
  For Instance..</p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;functional&gt;
  using namespace std;
  
  int add(int a,int b){
      return a+b;
  }
  
  int main(int argc, char** argv){
  
      function &lt;int(int,int)&gt; cppstyle;
      cppstyle = add;
  
      auto l = [] (function &lt;int(int,int)&gt; f,int a, int b) {return f(a,b);};
  
      cout &lt;&lt; l(cppstyle,10,30) &lt;&lt;"\n";   
  }
  </code></pre>
  
  <p>The output of the code above is same as the code below..</p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;functional&gt;
  using namespace std;
  
  int add(int a,int b){
      return a+b;
  }
  
  int main(int argc, char** argv){
  
      function &lt;int(int,int)&gt; cppstyle;
      cppstyle = add;
  
      auto l = [cppstyle] (int a, int b) {return cppstyle(a,b);};
  
      cout &lt;&lt; l(10,30) &lt;&lt;"\n";    
  }
  </code></pre>
  
  <p>Is "capturing a value" similar to "passing a value as an argument"? or capture has some special meaning?</p>