草庐IT

const-reference

全部标签

c++ - 如何将低级常量应用于模板变量。我正在尝试编写一个 const_cast 实现

如何让这个static_assert传递到我失败的代码中?我尝试了T周围const的所有排列,但我无法获得constint*。编译器总是将其解释为int*const。templateunionconst_cast_impl{usingCT=constT;static_assert(std::is_same::value,"CTisnotconstint*");Tdata;CTcdata;const_cast_impl(CTptr):cdata(ptr){}operatorT(){returndata;}};intmain(){inta=2;constint*ptr=&a;int*ptr

c++ - 如何像 C++ const/constexpr 一样定义 CUDA 设备常量?

在.cu文件中,我在全局范围内尝试了以下操作(即不在函数中):__device__staticconstdoublecdInf=HUGE_VAL/4;并得到nvcc错误:error:dynamicinitializationisnotsupportedfor__device__,__constant__and__shared__variables.如果可能的话,如何在设备上定义C++const/constexpr?注意1:#define是不可能的,不仅出于美学原因,而且因为在实践中表达式更复杂并且涉及内部数据类型,而不仅仅是double。因此,每次在每个CUDA线程中调用构造函数的代价

c++ - 转到特定页面后,如何将SwipeView的currentIndex设置为TabBar的currentIndex "by reference"?

我开始使用QtQuickControls2.0。我有使用C++的经验和少量的Qt经验,但我以前没有使用过QML。我有一个TabBar和一个SwipeView相互链接。我的意思是,当您在TabBar上选择一个页面时,SwipeView会转到该页面。当您从SwipeView滑动到一个页面时,TabBar会自行更新以反射(reflect)这一点。作为学习练习,我决定创建一个将用户转到第二页的按钮。问题是我似乎无法找到一种方法来做到这一点而不会弄乱TabBar和SwipeView之间的链接。下面的代码是我想出的最好的。它正确转到第二页,当我使用TabBar更改当前页面时,SwipeView仍会

c++ - 从 const string 到 bool 的隐式转换

这个问题在这里已经有了答案:WhyisthereanimplicittypeconversionfrompointerstoboolinC++?(3个答案)关闭5年前。我有以下代码:#include#includevoidfoo(boola){std::cout执行时我得到这个输出:bool我期望的输出是:string为什么g++4.9将此字符串隐式转换为bool?

c++ - Static Cast 访问静态 const 类成员

这个问题在这里已经有了答案:Undefinedreferencetostaticconstint(9个回答)关闭5年前。所以昨天我正在寻找SO,但找不到以下问题的答案。这种情况来self正在使用的一些代码,但这里是MCVE来演示它。我在A.h中定义了一个类A,其中只有一个静态常量。我已经在标题中对其进行了初始化。#ifndefA_H_#defineA_H_classA{public:staticconstinttest=5;~A(){};};#endif/*A_H_*/然后我有一个B类需要从A类访问publicstaticconst。在这个例子中,它将把值深度复制到一个vector中。

c++ - 二进制表达式 ('const char*' 和 'const char *' 的无效操作数)

这个问题在这里已经有了答案:Can'taddstringsinC++(7个答案)关闭4年前。我想用简单的语言知道这个错误的原因。#include#includeintmain(){std::stringexclam="!";std::stringmessage="Hello"+",world"+exclam;std::couttest.cpp:55:35:error:invalidoperandstobinaryexpression('constchar*'and'constchar*')std::stringmessage="Hello"+",world"+exclam;

c++ - 'const' 关键字是如何工作的?

使用const可以防止变量被更改。很容易。constintx=5;x=6;//notallowed!但这实际上是如何实现的呢?它只是一个编译器规则吗?还是在机器代码级别发生了一些事情,区分了const和非常量变量?编辑:我的问题不同于this因为那个问题只是询问编译器如何跟踪什么是const什么不是。我的问题不是这个。我的问题是关于const的实际机器代码级含义,如果有的话(似乎它可能只是一个编译器提示)。无论如何,只要看看我的问题的答案和链接问题的答案有何不同不同。这应该会提示您这不是重复的。编辑:关于在派生类中访问成员的“重复”问题不是重复的。不同的问题,不同的答案。

c++ - 为什么文字不是 const(字符串除外)?

文字通常是prvalue。字符串是一种特殊情况,定义为char数组(意思是lvalue)。这个问题专门针对非字符串文字。为什么非字符串文字不是const?foo(42);//passesfooan`int`,nota`constint`.您不能修改非字符串字面量,所以它不是const吗? 最佳答案 文字答案可能是因为文字早于const添加到语言中,所以它们自然不是const。但实际的答案是-const纯右值从根本上来说是很奇怪的东西。您不能从任何基本类型创建它们,但您可以拥有类类型的const纯右值。但为什么?通常,我们将事物设为c

c++ - 从函数返回临时对象的引用

考虑以下代码-#include#includeconstint&retRef(){return6;}intmain(){constint&k=retRef();printf("Value:%d\n",k);printf("Address:%p\n",&k);printf("Value:%d\n",k);return0;}输出是-Value:6Address:0x7ffd45bf544cValue:32692为什么在打印变量k的地址后值发生变化?如果我将行constint&k=retRef()替换为constint&k=6;,则输出符合预期。为什么会有这种不同的行为?提前致谢

c++ - std::reference_wrapper *this 周围

我有一个场景,我需要转换一个可以被*this链接的函数返回std::optional>而不是T&(原因超出了这个问题的范围)。我使用std::reference_wrapper的原因是因为std::optional不能引用,至少在C++11中不能。但是,这不起作用,因为我似乎遇到了终身问题。这是一个最小的例子:#include#includestructtest{std::reference_wrapperfoo(){val=42;return*this;}test&foo2(){val=50;return*this;}intval;};voidbar(testt){std::cout