草庐IT

remove_const

全部标签

c++ - const 和 constexpr 最终会是一回事吗?

我刚看了答案constvsconstexpronvariables我正在看这个GoogleTechTalkaboutC++11/14features,其中据说,在函数方面,将来可能不需要constexpr,因为编译器会进化以自行解决。最后,我知道Java编译器和JVM努力找出类(或任何变量可能)在构造后是不可变的-无需您明确说明-并根据这一事实进行各种邪恶的优化。那么,问题来了:const和constexpr的命运最终会是同一件事吗?也就是说,即使编译器不能保证进行运行时初始化等,它最终是否会尽可能(基本上)这样做?当这种情况发生时,其中一个关键字不会是多余的吗?(就像内联正在成为,也

c++ - std::transform 中的 [] const_iterator::value_type 是什么意思

具体代码在这里。第15行在做什么(调用转换)?有人可以解释为什么输出01234吗?另一方面,如果我在第15行将cb更改为++cb,它会输出01110。第15行的返回值在做什么?#include#include#include#include#includeintmain(){typedefstd::listL;Ll(5);typedefL::const_iteratorCI;CIcb=l.begin(),ce=l.end();typedefL::iteratorI;Ib=l.begin();std::transform(cb,--ce,++b,[](CI::value_typen){r

c++ - 无法在 MFC/C++ 项目中将参数 1 从 'const wchar_t *' 转换为 'LPCTSTR'

我在线上遇到编译错误:MessageBox(e.getAllExceptionStr().c_str(),_T("Errorinitializingthesoundplayer"));Error4errorC2664:'CWnd::MessageBoxA':cannotconvertparameter1from'constwchar_t*'to'LPCTSTR'c:\users\daniel\documents\visualstudio2012\projects\mytest1\mytest1\main1.cpp1411MyTest1我不知道如何解决这个错误,我尝试了以下方法:Mess

c++ - 来自 const_iterator 取消引用的赋值会导致未定义的行为吗?

此代码是对我在其他地方真正尝试做的事情的简化测试。我有一个函数,它接受一个“ref-to-ptr”参数并将其修改为从指针列表中返回一个指针。#include#includeusingnamespacestd;typedefint*intp;typedefstd::listintplist;intplistmyList;voidfunc(intp&arg)//(1){intplist::const_iteratorit=myList.begin();std::advance(it,2);arg=*it;}intmain(){myList.push_back(newint(1));myLi

c++ - 使用 static、const、constexpr 的全局声明/初始化

在C++或C++11中,对于以下声明//初始化,//globalscopeconstinta=1;//line1staticconstintb=2;//line2constexprintc=3;//line3staticconstexprintd=4;//line4constexprinte=a+b+c*d;//line5staticconstexprintf=a-b-c*d;//line6Thisquestion表示在文件范围内,C++中的第1行和第2行没有区别。3号线和4号线呢?第4行和第5行有区别吗?第5行和第6行有区别吗? 最佳答案

c++ - __attribute((const)) 的不一致 gcc 行为

我在gcc中遇到了一个关于用__attribute((const))标记的运算符和函数的非常奇怪的行为。逻辑和算术运算符导致不同的优化,我不明白为什么。这并不是真正的错误,因为__attribute((const))只是一个提示,不能保证其效果,但这仍然非常令人惊讶。谁有任何解释?这是代码。所以我定义了一个__attribute((const))函数:intf(int&counter)__attribute((const));intf(int&counter){++counter;return0;}然后我定义了一个运算符(operator)测试宏。这是通过宏而不是模板/仿函数完成的,以

iphone - 你可以在 iPhone 上使用 C open(const char* name, int flag) 函数吗?

我正在尝试移植一个库以在iPhone上运行,它使用内存映射和其他一些东西。我注意到一堆#defines也丢失了(O_RDONLY),它们应该在中定义。. 最佳答案 您可以使用它,但默认情况下,fcntl.hheader不包含在Foundation或UIKit框架中。要使用open(2)系统调用,只需在您使用它的任何地方导入该header(或将其添加到预编译的header文件中)。例如:#import//nowyoucanuseopenorimportyourlibraryheaderfiles

objective-c - 将 '__unsafe_unretained id *' 转换为 'const void **'

我正在尝试实现[NSMutableDictionarydictionaryWithObjects:framesforKeys:items]但是使用CFDictionary所以我可以控制键和值回调。这是我得到的:__unsafe_unretainedidkeys[itemCount];[itemsgetObjects:keysrange:NSMakeRange(0,itemCount)];__unsafe_unretainedidvalues[itemCount];[framesgetObjects:valuesrange:NSMakeRange(0,itemCount)];CFDict

iphone - 将 NSString 转换为 const char *

我想将nsstring值转换为constchar*。NSString*s=@"יככעימבבגיננימ";//Hebrewcharactersconstchar*t=[scStringUsingEncoding:NSUTF8StringEncoding];NSLog(@"\nstr=%s",t);控制台显示如下:“◊ô◊õ◊õ◊¢◊ô◊û◊ë◊ë◊í◊ô◊†◊†‰◊ô◊û”。如何将实际的NSString值放入constchar*?谢谢,洛加纳森 最佳答案 只是因为NSLog中的%s表示的是ASCII字符串(准确的说是plain-

iphone - 如何使用 NSString 或 const char *name 动态调用 Objective-C 中的方法?

我正在使用Objective-C中的动态编程进行一些工作,并且我已经通读了Objective-CRuntimeProgrammingGuide并能够完成我需要的大部分工作,但是我没有做的一件事我想出了如何动态调用一个方法,前提是我有它的字符串表示形式。本质上,我动态地查找属性以查看我的对象是否具有与使用class_copyPropertyList的列表匹配的属性,然后循环遍历并通过从plist文件填充的NSMutableDictionary匹配这些属性。找到匹配项后,我想执行该属性。我无法提前知道可能存在哪些匹配项,因为这是一个将打包到许多不同应用程序中的库。