草庐IT

const_iterators

全部标签

c++ - 带有 const 模板参数的模板模板类

我不明白为什么这不能编译:structA{};templatestructB{};templateclassT1,classT2>structC{};intmain(intac,char**av){typedefBb;//compilestypedefBb_const;//compilestypedefBba;//compilestypedefBba_const;//compilestypedefCc1;//compilestypedefCc2;//compilestypedefCc3;//ISOC++forbidsdeclarationof‘typename’withnotype}(

c++ - 为什么不能将 const 对象放入 STL 容器中?

请参阅下面的代码-我正在尝试将const对象放入vector中。我知道答案是“STL容器要求对象是可分配的和可复制构造的”,但是,在不引用标准的情况下,任何人都可以解释这样做的问题是什么?我不明白为什么不能复制这样的类(除了c++不允许)。它只是一个存储的值,不允许更改-为什么不能将它放在一个vector中,简单地创建另一个这些对象?#include//Attempt1///home/doriad/Test/Test.cxx:3:8:error:non-staticconstmember‘constintMyClass::x’,can’tusedefaultassignmentoper

c++ - 使用删除的复制构造函数初始化 const 引用成员

此代码在B中有一个constA&a成员,其中A有一个已删除的复制构造函数,在GCC中无法编译4.8.1,但它在clang3.4中工作正常:classA{public:A()=default;A(constA&)=delete;A&operator=(constA&)=delete;};classB{public:B(constA&a):a{a}{}private:constA&a;};intmain(){Aa{};Bb{a};}哪一个编译器是正确的?GCC中的错误是:prog.cpp:Inconstructor‘B::B(constA&)’:prog.cpp:11:14:error:u

C++ 对 const 引用参数的依赖没有改变

请考虑以下代码:voidfunc1(constint&i);voidfunc2(inti);voidf(){inta=12;func1(a);func2(a);}使用带有-O3的g++4.6编译,我可以看到编译器在函数调用之间重新读取“a”的值。将a的定义更改为“constint”,编译器不会这样做,而是简单地将立即值“12”加载到edi中。如果a不是const,也是如此,但我将func1的签名更改为按值接受。虽然不是代码生成中的错误,但这仍然是一种奇怪的行为。既然func1promise不改变a,编译器的代码为什么要根据a是否为const而改变?编辑:一些怀疑论者声称我可能读错了代码

带有 'const' 的 C++ 模板

考虑以下模板类:templateclassFunction{public:virtualfloateval(constT&x,constT&y)=0;};由于“eval”函数不应修改两个输入“x”和“y”的值,因此我将它们作为“const”。然后我创建以下派生自Function的类classFoo1:publicFunction{public:Foo1():Function(){}virtualfloateval(constfloat*&x,constfloat*&y){...}};当我用g++编译时,我收到以下警告:hiddenoverloadedvirtualfunction'Fu

c++ - const constexpr char* 与 constexpr char*

我知道const和constexpr之间的区别。一个是编译时常量,另一个是编译时常量或运行时常量。但是,对于字符/字符串数组,我很困惑为什么编译器会提示一个被使用在另一个之上。例如我有:constexprchar*A[2]={"....","....."};constconstexprchar*B[2]={"....","....."};通过声明“A”我得到:ISOC++forbidsconvertingastringconstantto'char*'[-Wwrite-strings]但声明为“B”时,我没有收到任何警告。为什么额外的const限定符会消除警告?无论如何,它们都不都是“

c++ - Range-v3:使用 view_facade 提供 const 和非常量迭代器

我在使用view_facade(来自range-v3)创建提供常量和非常量访问的View时遇到问题。例如,我尝试修改view_facade测试(在test/view_facade.cpp中)以允许非const访问(默认情况下它只允许const访问):structMyRange:ranges::range_facade{private:friendstructranges::range_access;std::vectorints_;templatestructcursor{private:usingIt=typenamestd::conditional::const_iterator,

c++ - 从 const 类继承

我想从一个带有const说明符的类继承,如下所示:classProperty{intget()const;voidset(inta);};classConstChild:publicconstProperty{//CannevercallA::set()withthisclass,evenif//theinstantiationofthisclassisnotconst};classNonConstChild:publicProperty{//CancallbothA::set()andA::get()dependingon//theconstnessofinstantiationof

c++ - 如何使用 C++ Boost 的 regex_iterator()

我正在使用Boost来匹配字符串中的子字符串。Io遍历结果,我需要使用regex_iterator().那是我找到的唯一用法示例,但我不理解回调。有人可以给我一个函数的用法示例吗?让我们假设我的输入文本是:"HelloeverybodythisisasentenseBlabla14..yesdate04/15/1986"我想得到:"Hello""everybody""this""is""a""sentense""bla""yes""date" 最佳答案 如果您不理解示例的唯一部分是回调,请考虑:std::for_each(m1,m2

c++ - 无法在 boost 1.57 中编译 boost/any_iterator.hpp

在(尝试)升级VS2012项目以使用boost1.57之后,我无法再编译——boost/any_iterator.hpp中出现大量错误消息(见下文)。作为测试,我创建了一个新项目,其中只包含一个空的主函数和#include"boost/any_iterator.hpp"并得到了相同的错误集。这是它提示的代码://snippetfromboost/any_iterator.hpptemplateclasspostfix_increment_proxy>{//...};同一文件中还有另一个类遵循相同的模式并生成相同的错误。range_detail::any_iterator在文件中稍高一点