草庐IT

decltype-auto

全部标签

c++ - 如何使用 auto 声明数组

我一直在玩auto,我注意到在大多数情况下,您可以用auto替换变量定义,然后分配类型。在下面的代码中,w和x是等价的(默认初始化为int,但我们不要进入潜在的拷贝)。有没有办法声明z使其具有与y相同的类型?intw{};autox=int{};inty[5];autoz=int[5]; 最佳答案 TL;DRtemplateusingraw_array=T[N];auto&&z=raw_array{};您的autoz=int[5];示例不合法,就像autoz=int;一样,仅仅是因为类型不是有效的初始化器。你可以这样写:autoz=

c++ - 如何使用 auto 声明数组

我一直在玩auto,我注意到在大多数情况下,您可以用auto替换变量定义,然后分配类型。在下面的代码中,w和x是等价的(默认初始化为int,但我们不要进入潜在的拷贝)。有没有办法声明z使其具有与y相同的类型?intw{};autox=int{};inty[5];autoz=int[5]; 最佳答案 TL;DRtemplateusingraw_array=T[N];auto&&z=raw_array{};您的autoz=int[5];示例不合法,就像autoz=int;一样,仅仅是因为类型不是有效的初始化器。你可以这样写:autoz=

c++ - 可以将变量重新声明为推断为相同类型的 auto 吗?

这个问题在这里已经有了答案:Doesadeclarationusing"auto"matchanexterndeclarationthatusesaconcretetypespecifier?(3个回答)关闭6年前。标准是否允许以下​​内容?#includeexterninta;autoa=3;intmain(int,char**){std::coutclang接受代码。g++提示声明冲突。 最佳答案 从标准上我不太清楚,但是,有这样写的section7.1.6.4autospecifierAprogramthatusesautoi

c++ - 可以将变量重新声明为推断为相同类型的 auto 吗?

这个问题在这里已经有了答案:Doesadeclarationusing"auto"matchanexterndeclarationthatusesaconcretetypespecifier?(3个回答)关闭6年前。标准是否允许以下​​内容?#includeexterninta;autoa=3;intmain(int,char**){std::coutclang接受代码。g++提示声明冲突。 最佳答案 从标准上我不太清楚,但是,有这样写的section7.1.6.4autospecifierAprogramthatusesautoi

c# - C# 是否与 C++11 中的 decltype 等效?

我已经熟悉C++,并且在尝试了C++11提供的一些新功能后,我决定更加熟悉C#。正如预期的那样,编程原理相似,但某些功能不同。差异和相似之处是我所关注的,因此我决定问一下C#是否与C++11中的decltype等效?intx=4;decltype(x)y=16;在上面的示例中,'var'可以正常工作,所以这里有一个示例说明何时需要decltype。如果我只是有条件地调用一个函数,那么我需要声明将保存其结果而不使用'var'的变量,如下所示:varpendingProcessData=trace.UseProcesses();//OnlyrequestCPUschedulingdataw

c# - C# 是否与 C++11 中的 decltype 等效?

我已经熟悉C++,并且在尝试了C++11提供的一些新功能后,我决定更加熟悉C#。正如预期的那样,编程原理相似,但某些功能不同。差异和相似之处是我所关注的,因此我决定问一下C#是否与C++11中的decltype等效?intx=4;decltype(x)y=16;在上面的示例中,'var'可以正常工作,所以这里有一个示例说明何时需要decltype。如果我只是有条件地调用一个函数,那么我需要声明将保存其结果而不使用'var'的变量,如下所示:varpendingProcessData=trace.UseProcesses();//OnlyrequestCPUschedulingdataw

c++ - 尾随返回类型、decltype 和 const-ness

我只是在尝试新的尾随返回类型,但我遇到了这个(简化的)代码的问题#includeclassMyContainer{std::listints;autobegin()->decltype(ints.begin()){returnints.begin();}autobegin()const->decltype(ints.begin()){returnints.begin();}};忽略这段代码毫无意义的事实。重要的部分是使用GCC4.6.1时产生的编译器错误(带有-std=c++0x标志):Inmemberfunction'std::list::iteratorMyContainer::b

c++ - 尾随返回类型、decltype 和 const-ness

我只是在尝试新的尾随返回类型,但我遇到了这个(简化的)代码的问题#includeclassMyContainer{std::listints;autobegin()->decltype(ints.begin()){returnints.begin();}autobegin()const->decltype(ints.begin()){returnints.begin();}};忽略这段代码毫无意义的事实。重要的部分是使用GCC4.6.1时产生的编译器错误(带有-std=c++0x标志):Inmemberfunction'std::list::iteratorMyContainer::b

c++ - 在 decltype 中使用 this 指针

示例(编译良好)structA{voidf(){};autog()->decltype(f()){}};问题如果我在decltype中添加this指针(即decltype(this->f())),我会在gcc4.7.0中得到以下编译错误:error:invaliduseofincompletetype'structA'error:forwarddeclarationof'structA'error:invaliduseofincompletetype'structA'error:forwarddeclarationof'structA'不允许在decltype中使用this吗?有人可以

c++ - 在 decltype 中使用 this 指针

示例(编译良好)structA{voidf(){};autog()->decltype(f()){}};问题如果我在decltype中添加this指针(即decltype(this->f())),我会在gcc4.7.0中得到以下编译错误:error:invaliduseofincompletetype'structA'error:forwarddeclarationof'structA'error:invaliduseofincompletetype'structA'error:forwarddeclarationof'structA'不允许在decltype中使用this吗?有人可以