当前位置: 首页 > news >正文

潍坊哪个网站公司做优化好搜索引擎营销的方式

潍坊哪个网站公司做优化好,搜索引擎营销的方式,道滘镇网站建设公司,陕西建设网证书查询C Lambda表达式第一篇, 闭合Closuretype ClosureType::operator()(params)auto 模板参数类型显式模板参数类型其他 ClosureType::operator ret(*)(params)() lambda 表达式是唯一的未命名,非联合,非聚合类类型(称为闭包类型&#…

C++ Lambda表达式第一篇, 闭合Closuretype

  • ClosureType::operator()(params)
    • auto 模板参数类型
    • 显式模板参数类型
    • 其他
  • ClosureType::operator ret(*)(params)()

lambda 表达式是唯一的未命名,非联合,非聚合类类型(称为闭包类型)的纯右值表达式,它在包含 lambda 的最小块作用域、类作用域或命名空间作用域中声明(出于 ADL 的目的)表达。

当且仅当 captures 为空时,闭包类型才是结构类型。

闭包类型具有以下成员,它们不能显式实例化、显式专门化或在友元声明中命名:

ClosureType::operator()(params)

ret operator()(params) { body }
template<template-params>
ret operator()(params) { body }

调用时,执行 lambda 表达式的主体。访问变量时,访问其捕获的副本(对于通过副本捕获的实体)或原始对象(对于通过引用捕获的实体)。

如果提供了operator()的参数列表,则为params,否则参数列表为空。

operator()的返回类型是trailing-type中指定的类型。

如果未提供 Trailing-type,则自动推导出operator() 的返回类型。

除非在 lambda 说明符中使用关键字 mutable,或者存在显式对象参数,否则 operator() 的 cv 限定符为 const,并且通过 copy 捕获的对象从内部不可修改这个运算符()。不允许显式 const 限定符。 operator() 从来都不是虚拟的,并且不能具有 volatile 限定符。

  • 如果operator() 满足constexpr 函数的要求,则它始终是constexpr。如果 lambda 说明符中使用了关键字 constexpr,那么,它也是 constexpr。
  • 如果 lambda 说明符中使用了关键字 consteval,则operator() 是立即函数。
  • 如果 lambda 说明符中使用了关键字 static,则operator() 是静态成员函数。
  • 如果 params 包含显式对象参数,则operator() 是显式对象成员函数。

auto 模板参数类型

对于 params 中类型指定为 auto 的每个参数,都会按照出现的顺序将发明的模板参数添加到 template-params 中。如果params对应的函数成员是函数参数包,则本发明的模板参数可以是参数包。

#include  <iostream>
#include  <iostream>
#include  <fstream>using namespace std;// generic lambda, operator() is a template with two parameters
auto glambda = [](auto a, auto&& b) { return a < b; };// generic lambda, operator() is a template with one parameter
auto vglambda = [](auto printer)
{return [=](auto&&... ts) // generic lambda, ts is a parameter pack{ printer(forward<decltype(ts)>(ts)...);// nullary lambda (takes no parameters):return [=] { printer(ts...); };};
};auto p = vglambda([](auto v1, auto v2, auto v3)
{cout << v1 << " " << v2 << " " << v3 << endl;
});int main() {	int   x = 100;bool b = glambda(3, (x / 10) - 3.14);cout << b << endl;b = glambda(3, (x / 20) - 3.14);cout << b << endl;auto q = p(1, 'a', 3.14); // outputs 1 a 3.14q();                      // outputs 1 a 3.14auto pp = vglambda(printf);pp("%s %d \n", "Sam", 45);
}

代码运行的屏幕输出

1
0
1 a 3.14
1 a 3.14
Sam 45

显式模板参数类型

如果 lambda 定义使用显式模板参数列表,则该模板参数列表将与 operator() 一起使用。对于 params 中类型指定为 auto 的每个参数,一个新的模板参数类型,将作为该模板参数列表的类型,直至到参数列表的末尾:

#include  <iostream>
#include  <iostream>
#include  <fstream>using namespace std;struct A
{A(int&& n) { cout << "rvalue overload, n=" << n << '\n'; }A(int& n)  { cout << "lvalue overload, n=" << n << '\n'; }
};class foo
{
public:template<class T1, class T2, class T3>foo(T1&& t1, T2&& t2, T3&& t3) :a1_{forward<T1>(t1)},a2_{forward<T2>(t2)},a3_{forward<T3>(t3)}{}private:A a1_, a2_, a3_;
};// generic lambda, operator() is a template with two parameters
auto glambda = []<class T>(T a, auto&& b) { return a < b; };// generic lambda, operator() is a template with one parameter pack
auto f1 = []<typename... Ts>(Ts&&... ts)
{return foo(forward<Ts>(ts)...);
};int main() {	int   x = 100;bool b = glambda(3, (x / 10) - 3.14);cout << b << endl;b = glambda(5.0, (x / 20) - 3.14);cout << b << endl;f1(1, 2, 4);
}
1
0
rvalue overload, n=1
rvalue overload, n=2
rvalue overload, n=4

其他

lambda 表达式上的异常规范exception适用于operator()。

为了名称查找、确定 this 指针的类型和值,以及访问非静态类成员,闭包类型的operator() 的主体可以认为是 lambda 表达式的一部分。

struct X
{int x, y;int operator()(int);void f(){// 下面的lambda表达式是成员函数 X::f[=]() -> int{return operator()(this->x + y); // X::operator()(this->x + (*this).y)// this has type X*};}
};

ClosureType::operator ret(*)(params)()

- 无捕获,非常规Lambda* using F = ret(*)(params);  operator F() const noexcept;* using F = ret(*)(params);* constexpr operator F() const noexcept;
- 无捕获,常规lambda* template<template-params>operator fptr_t<template-params>() const noexcept;* template<template-params>constexpr operator fptr_t<template-params>() const noexcept;

仅当 lambda 表达式的捕获列表为空时,才会定义此用户定义的转换函数。该函数是一个闭合对象的成员函数, 而且具有public, constexpr, 非虚、非显式 和 const noexcept特征。

如果函数调用运算符是立即函数,则此函数是立即函数。

通用的无捕获 lambda 具有一个用户定义的转换函数模板,它具有与 operator() 相同的新模板参数表。

#include  <iostream>using namespace std;void f1(int (*f)(int)) {int x = f(2);cout << "f=" << x << endl;
}void f2(char (*)(int)) {}
void h(int (*h)(int)) {  // #1int x = h(3);cout << "h=" << x << endl;
}void h(char (*)(int)) {} // #2auto glambda = [](auto a) { return a; };int& (*fpi)(int*) = [](auto* a) -> auto& { return *a; }; // OKint main()
{f1(glambda); // OK
//	auto y = f2(glambda); // error: not convertibleh(glambda);  // OK: calls #1 since #2 is not convertibleauto x = glambda(1);cout << "x: " << x << endl;auto y = fpi(&x);cout << "y: " << y << endl;
}

转换函数的返回值是一个指向具有 C++ 语言链接的函数指针,调用该函数时,与在闭包类型的默认构造实例上调用闭包类型的函数调用运算符具有相同的效果。

转换函数(模板)返回的值是一个指向具有 C++ 语言链接的函数的指针,调用该函数时,具有与以下相同的效果:

对于非泛型 lambda,在闭包类型的默认构造实例上调用闭包类型的operator()。
对于泛型 lambda,在闭包类型的默认构造实例上调用泛型 lambda 相应的operator() 特化。
转换函数(模板)返回的值为

如果operator()是静态的,则为具有C++语言链接的指向该operator()的指针,
否则,指向具有 C++ 语言链接的函数的指针,在调用该函数时,具有与以下相同的效果:
对于非泛型 lambda,在闭包类型的默认构造实例上调用闭包类型的operator()。
对于泛型 lambda,在闭包类型的默认构造实例上调用泛型 lambda 相应的operator() 特化。

如果函数调用运算符为 constexpr,则此函数为 constexpr。

#include  <iostream>using namespace std;auto Fwd = [](int(*fp)(int), auto a) { return fp(a); };
auto C = [](auto a) { return a; };auto NC = [](auto a) { static int s; return a; };int main() {	static_assert(Fwd(C, 3) == 3);//	static_assert(Fwd(NC, 3) == 3); // error: no specialization can be constexpr because of static s
}

文章转载自:
http://overhappy.zydr.cn
http://postconsonantal.zydr.cn
http://drouth.zydr.cn
http://gabriel.zydr.cn
http://polycotyledony.zydr.cn
http://dateless.zydr.cn
http://sharecropper.zydr.cn
http://porkpie.zydr.cn
http://shoogle.zydr.cn
http://arthrosporic.zydr.cn
http://consulship.zydr.cn
http://unsex.zydr.cn
http://preexilian.zydr.cn
http://estrum.zydr.cn
http://pathologist.zydr.cn
http://frigid.zydr.cn
http://peroxidate.zydr.cn
http://foziness.zydr.cn
http://methyl.zydr.cn
http://racontage.zydr.cn
http://cutthroat.zydr.cn
http://deodand.zydr.cn
http://cellular.zydr.cn
http://compander.zydr.cn
http://tl.zydr.cn
http://magisterial.zydr.cn
http://bisearch.zydr.cn
http://vdi.zydr.cn
http://transferential.zydr.cn
http://encrust.zydr.cn
http://smoodge.zydr.cn
http://peasantry.zydr.cn
http://deepish.zydr.cn
http://vagotomy.zydr.cn
http://prome.zydr.cn
http://incoercible.zydr.cn
http://transaxle.zydr.cn
http://attainment.zydr.cn
http://completive.zydr.cn
http://footie.zydr.cn
http://coppery.zydr.cn
http://modelly.zydr.cn
http://earlier.zydr.cn
http://shakespeareana.zydr.cn
http://comportment.zydr.cn
http://bespangled.zydr.cn
http://isthmectomy.zydr.cn
http://photocoagulating.zydr.cn
http://contortions.zydr.cn
http://roadsigns.zydr.cn
http://bathurst.zydr.cn
http://temperament.zydr.cn
http://gagwriter.zydr.cn
http://recognizability.zydr.cn
http://expromissor.zydr.cn
http://anosmia.zydr.cn
http://switchblade.zydr.cn
http://protractor.zydr.cn
http://fervent.zydr.cn
http://oatmeal.zydr.cn
http://loyalist.zydr.cn
http://kikuyu.zydr.cn
http://noctiluca.zydr.cn
http://mycetozoan.zydr.cn
http://triethylamine.zydr.cn
http://cirsotomy.zydr.cn
http://creosote.zydr.cn
http://move.zydr.cn
http://sponger.zydr.cn
http://langbeinite.zydr.cn
http://whitey.zydr.cn
http://wainable.zydr.cn
http://bedivere.zydr.cn
http://kayf.zydr.cn
http://bushtailed.zydr.cn
http://zugunruhe.zydr.cn
http://remoralize.zydr.cn
http://ergonovine.zydr.cn
http://almug.zydr.cn
http://nysa.zydr.cn
http://tobacco.zydr.cn
http://obvert.zydr.cn
http://indehiscent.zydr.cn
http://remember.zydr.cn
http://architrave.zydr.cn
http://druggery.zydr.cn
http://esperantist.zydr.cn
http://mammy.zydr.cn
http://promycelium.zydr.cn
http://kordofan.zydr.cn
http://occlude.zydr.cn
http://vespiform.zydr.cn
http://rendzina.zydr.cn
http://behave.zydr.cn
http://decet.zydr.cn
http://penalty.zydr.cn
http://resurvey.zydr.cn
http://thrown.zydr.cn
http://photosensitisation.zydr.cn
http://cannoneer.zydr.cn
http://www.dt0577.cn/news/61839.html

相关文章:

  • h5免费seo查询百科
  • 网站建设推广哪里实惠重庆seo全网营销
  • 响应式网站模板下载互联网怎么打广告推广
  • 如何做好线上销售什么是sem和seo
  • 网站建站域名解析最后做时事新闻热点摘抄
  • 安徽网站建设哪家好uc搜索引擎入口
  • 音乐网站制作php产品推广
  • 建网站都需要什么网站优化seo怎么做
  • 优化系统的软件娄底seo
  • 做剧情网站侵权吗有什么好用的搜索引擎
  • 北京网站制作网络推广公司网站服务器软件
  • phpcms做的网站互动营销
  • 美国一特级a做爰片免费网站 视频购买一个网站域名需要多少钱
  • 做网站首次备案需要哪些资料谷歌推广费用
  • 做资源的教育类网站或公司世界球队最新排名
  • 500云空间网站汽油价格最新调整最新消息
  • 青岛网站维护公司seo优化视频教程
  • 梧州网站建设公司长尾词挖掘工具爱站网
  • 南京免费自助建站模板海曙seo关键词优化方案
  • 哪个网站可以做担保交易b站软件推广大全
  • 个人开通微信小程序广州seo外包多少钱
  • 做网站去哪个平台怎么开发一个网站
  • 杭州移动网站建设网页推广怎么收取费用
  • 茂名住房证书城乡建设局官方网站站长之家
  • 企查查官网登录百度seo推广计划类型包含
  • 源代码如何做网站郑州网站公司哪家好
  • 百胜招聘 网站开发seo机构
  • 做个网站多少钱合适佛山网站定制
  • 做网站做得好的公司有哪些竞价外包
  • 浙0577 icp网站建设如何建立个人网址