• <tfoot id='YZF4B'></tfoot>

  • <i id='YZF4B'><tr id='YZF4B'><dt id='YZF4B'><q id='YZF4B'><span id='YZF4B'><b id='YZF4B'><form id='YZF4B'><ins id='YZF4B'></ins><ul id='YZF4B'></ul><sub id='YZF4B'></sub></form><legend id='YZF4B'></legend><bdo id='YZF4B'><pre id='YZF4B'><center id='YZF4B'></center></pre></bdo></b><th id='YZF4B'></th></span></q></dt></tr></i><div id='YZF4B'><tfoot id='YZF4B'></tfoot><dl id='YZF4B'><fieldset id='YZF4B'></fieldset></dl></div>

      <small id='YZF4B'></small><noframes id='YZF4B'>

      1. <legend id='YZF4B'><style id='YZF4B'><dir id='YZF4B'><q id='YZF4B'></q></dir></style></legend>
          <bdo id='YZF4B'></bdo><ul id='YZF4B'></ul>

      2. Lambda 的显式返回类型

        Explicit Return Type of Lambda(Lambda 的显式返回类型)
          <i id='s3ZQE'><tr id='s3ZQE'><dt id='s3ZQE'><q id='s3ZQE'><span id='s3ZQE'><b id='s3ZQE'><form id='s3ZQE'><ins id='s3ZQE'></ins><ul id='s3ZQE'></ul><sub id='s3ZQE'></sub></form><legend id='s3ZQE'></legend><bdo id='s3ZQE'><pre id='s3ZQE'><center id='s3ZQE'></center></pre></bdo></b><th id='s3ZQE'></th></span></q></dt></tr></i><div id='s3ZQE'><tfoot id='s3ZQE'></tfoot><dl id='s3ZQE'><fieldset id='s3ZQE'></fieldset></dl></div>
          <tfoot id='s3ZQE'></tfoot>
        • <small id='s3ZQE'></small><noframes id='s3ZQE'>

          <legend id='s3ZQE'><style id='s3ZQE'><dir id='s3ZQE'><q id='s3ZQE'></q></dir></style></legend>

              <tbody id='s3ZQE'></tbody>

                • <bdo id='s3ZQE'></bdo><ul id='s3ZQE'></ul>
                • 本文介绍了Lambda 的显式返回类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  当我尝试编译此代码 (VS2010) 时,出现以下错误:错误 C3499:已被指定为具有 void 返回类型的 lambda 无法返回值

                  When I try and compile this code (VS2010) I am getting the following error: error C3499: a lambda that has been specified to have a void return type cannot return a value

                  void DataFile::removeComments()
                  {
                    string::const_iterator start, end;
                    boost::regex expression("^\s?#");
                    boost::match_results<std::string::const_iterator> what;
                    boost::match_flag_type flags = boost::match_default;
                    // Look for lines that either start with a hash (#)
                    // or have nothing but white-space preceeding the hash symbol
                    remove_if(rawLines.begin(), rawLines.end(), [&expression, &start, &end, &what, &flags](const string& line)
                    {
                      start = line.begin();
                      end = line.end();
                      bool temp = boost::regex_search(start, end, what, expression, flags);
                      return temp;
                    });
                  }
                  

                  我如何指定 lambda 具有void"返回类型.此外,如何指定 lambda 具有bool"返回类型?

                  How did I specify that the lambda has a 'void' return type. More-over, how do I specify that the lambda has 'bool' return type?

                  更新

                  以下编译.有人可以告诉我为什么可以编译而另一个不能吗?

                  The following compiles. Can someone please tell me why that compiles and the other does not?

                  void DataFile::removeComments()
                  {
                    boost::regex expression("^(\s+)?#");
                    boost::match_results<std::string::const_iterator> what;
                    boost::match_flag_type flags = boost::match_default;
                    // Look for lines that either start with a hash (#)
                    // or have nothing but white-space preceeding the hash symbol
                    rawLines.erase(remove_if(rawLines.begin(), rawLines.end(), [&expression, &what, &flags](const string& line)
                    { return boost::regex_search(line.begin(), line.end(), what, expression, flags); }));
                  }
                  

                  推荐答案

                  您可以使用 -> 显式指定 lambda 的返回类型.在参数列表后输入:

                  []() -> Type { }
                  

                  但是,如果 lambda 有一个语句并且该语句是 return 语句(并且它返回一个表达式),则编译器可以从该返回表达式的类型推导出返回类型.您的 lambda 中有多个语句,因此它不会推断类型.

                  However, if a lambda has one statement and that statement is a return statement (and it returns an expression), the compiler can deduce the return type from the type of that one returned expression. You have multiple statements in your lambda, so it doesn't deduce the type.

                  这篇关于Lambda 的显式返回类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Consistent pseudo-random numbers across platforms(跨平台一致的伪随机数)
                  Vary range of uniform_int_distribution(改变uniform_int_distribution的范围)
                  What is a seed in terms of generating a random number?(就生成随机数而言,种子是什么?)
                  Is 1.0 a valid output from std::generate_canonical?(1.0 是 std::generate_canonical 的有效输出吗?)
                  Getting big random numbers in C/C++(在 C/C++ 中获取大随机数)
                  What is the best way to generate random numbers in C++?(在 C++ 中生成随机数的最佳方法是什么?)
                    <tbody id='midfC'></tbody>

                    <legend id='midfC'><style id='midfC'><dir id='midfC'><q id='midfC'></q></dir></style></legend>
                          • <bdo id='midfC'></bdo><ul id='midfC'></ul>
                            <i id='midfC'><tr id='midfC'><dt id='midfC'><q id='midfC'><span id='midfC'><b id='midfC'><form id='midfC'><ins id='midfC'></ins><ul id='midfC'></ul><sub id='midfC'></sub></form><legend id='midfC'></legend><bdo id='midfC'><pre id='midfC'><center id='midfC'></center></pre></bdo></b><th id='midfC'></th></span></q></dt></tr></i><div id='midfC'><tfoot id='midfC'></tfoot><dl id='midfC'><fieldset id='midfC'></fieldset></dl></div>
                            <tfoot id='midfC'></tfoot>

                            <small id='midfC'></small><noframes id='midfC'>