c – \u0026\u0026宣告的变量

c – \u0026\u0026宣告的变量,第1张

概述考虑(x | r | l | pr | gl)的值,我想到了以下问题: 考虑以下两个变量声明: X x = ...; 和 X&& x = ...; 并假设…不传递x值. 有人会想到代码不使用decltype,这在哪里有所区别?在这两种情况下,(x)将以类型X的左值为单位,不会吗? 模板非类型参数 cannot refer to a temporary.因此,给出 struct X {};X pu 考虑(x | r | l | pr | gl)的值,我想到了以下问题:

考虑以下两个变量声明:

X x = ...;

X&& x = ...;

并假设…不传递x值.

有人会想到代码不使用decltype,这在哪里有所区别?在这两种情况下,(x)将以类型X的左值为单位,不会吗?

解决方法 模板非类型参数 cannot refer to a temporary.因此,给出
struct X {};X purr() { return {}; }X x1 = purr();X&& x2 = purr();template<X&> class woof {};

我们有

woof<x1> w1; // OKwoof<x2> w2; // Error

如果…不限于类型X的prvalue,则切片是使两个非等效的较不模糊的方式.鉴于:

struct X { virtual ~X() = default; };struct Y : X {};Y meow() { return {}; }

然后:

X x1 = meow();        // slicesX&& x2 = meow();      // doesn't slice

从而:

dynamic_cast<Y&>(x1); // throws std::bad_castdynamic_cast<Y&>(x2); // OK
总结

以上是内存溢出为你收集整理的c – \u0026\u0026宣告的变量全部内容,希望文章能够帮你解决c – \u0026\u0026宣告的变量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1252237.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存