分享
三行代码  ›  专栏  ›  技术社区  ›  NKatUT

为什么不允许constexpr局部变量作为默认函数参数?

  •  2
  • NKatUT  · 技术社区  · 6 天前

    我想我明白了为什么C++不允许 地方的 作为默认函数参数的变量:

    int main () {
       auto local{1024};
       auto lambda = [](auto arg1 = local){};    // "illegal use of local variable as default parameter"
    }
    

    constexpr本地

    int main () {
       constexpr auto local{1024};
       auto lambda = [](auto arg1 = local){};    // "illegal use of local variable as default parameter"
    }
    

    然而,一个 全球的 允许变量(即使非constexpr):

    int global;
    int main () {
       auto lambda = [](int arg1 = global){};    // OK
    }
    

    1 回复  |  直到 6 天前
        1
  •  3
  •   NathanOliver Sridhar Iyer    6 天前

    auto get_functor() {
       constexpr auto local{1024};
       return [](auto arg1 = local){};    // "illegal use of local variable as default parameter"
    }
    

    现在,在 get_functor

    推荐文章