草庐IT

const_iterators

全部标签

c++ - 将临时对象附加到对 const 的引用时出错

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:typedefandcontainersofconstpointers为什么代码会发出错误?intmain(){//testcodetypedefint&Ref_to_int;constRef_to_intref=10;}错误是:error:invalidinitializationofnon-constreferenceoftype‘int&’fromatemporaryoftype‘int’我阅读了prolongingthelifetimeoftemporaries上的帖子这表示临时对象可以绑定(bind

c++ - 是否可以编写这些 pure_assert 和 const_assert 宏?

GCC__attribute__((pure))和__attribute__((const))分别允许将函数声明为无副作用和引用透明;假设我想编写pure_assert和const_assert宏,其参数必须是适当严格级别的表达式,即:assert(oops_a_side_effect());静默导致调试和发布中的不同行为,但是:pure_assert(oops_a_side_effect());const_assert(oops_read_a_global());至少在调试版本中会出现编译时错误。由于我希望是显而易见的原因,您不能只创建一个声明为__attribute__((pure

c++ - const 引用右值的类数据成员的生命周期是多少?

通常这个讨论只针对局部函数变量:voidfoo(constint&i){//useitillfoo()ends}foo(3);但是,这条规则是否也适用于class成员?structA{constint&a;A():a(3){}//version1A(constint&i):a(i){}//version2};现在A用作,{return()?newA:newA(3):newA(some_local_variable);}a的内容是否会在all3的整个生命周期内保持不变新分配A? 最佳答案 C++03标准(“12.2/5临时对象”部分)

c++ - 指向 const 类型的 const 指针的模板特化

我正在阅读http://bartoszmilewski.wordpress.com/2009/10/21/what-does-haskell-have-to-do-with-c/并遇到这段代码来检查类型是否为指针:templatestructisPtr{staticconstboolvalue=false;};templatestructisPtr{staticconstboolvalue=true;};templatestructisPtr{staticconstboolvalue=true;};我如何专门化通用模板来处理指向const类型的const指针的情况?如果我这样做:std

c++ - const 对象未初始化的编译器投诉

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:uninitializedconst我知道需要初始化一个const对象。所以对于下面的代码,classsample{};intmain(){constsampleobj;return0;}编译器会报错,因为const对象obj没有初始化。但是当我使用默认构造函数修改代码(如下所示)时,编译器不会抛出任何错误。classsample{public:sample(){}};intmain(){constsampleobj;return0;}新添加的默认ctor做了什么让编译器满意的事情?

c++ - 如何将 boost::spirit::lex token 的值从 iterator_range 转换为字符串?

当我尝试从iterator_range转换标记的值时,词法分析器在尝试读取下一个标记时失败。这是包含token定义的token结构:(我不认为这是相关的,但我包括以防万一。)templatestructTokens:boost::spirit::lex::lexer{Tokens();boost::spirit::lex::token_defidentifier;boost::spirit::lex::token_defstring;boost::spirit::lex::token_defboolean;boost::spirit::lex::token_defreal;boost:

C++ const 循环声明

为什么以下代码编译时会使用引用自身的循环const变量?#includeexternintmain(intargc,char*argv[]){constintfoo=foo*60;std::cout我正在使用SUNWspro编译器在Solaris5.10x86主机上进行编译:/opt/SUNWspro/bin/CCtest.cpp为了完整起见,这是它打印的内容:$./a.out-519270512 最佳答案 在C++中,变量在范围内并且可以用作它们自己的初始化器的一部分。比如下面的代码也是合法的:intx=x;这样做会导致未定义的行

c++ - 在构造具有 const 成员的对象时调用另一个构造函数

我有一个包含const成员的类,一个构造函数调用另一个填充了额外值的构造函数。通常我可以为此使用冒号初始化器,但函数很复杂(printf/sprintf-like)并要求我在堆栈上使用一个变量,所以我必须在构造函数的主体中执行此操作并使用assign*this到新对象。但是当然这是无效的,因为我的成员变量是const。classA{public:A(intb):b(b),c(0),d(0)//requiredbecauseconst{intnewC=0;intnewD=0;myfunc(b,&newC,&newD);*this=A(b,newC,newD);//invalidbecau

c++ - 返回指向 const 对象的 const 共享指针的 const vector

给定以下基于共享指针容器的类,classFoo;classBar{public://...conststd::vector>&getFoos()const{returnfoos_;}private:std::vector>foos_;};不会编译因为invalidinitializationofreferenceoftype‘conststd::vector,std::allocator>>&’fromexpressionoftype‘conststd::vector,std::allocator>>’foos_成员需要指向可变的Foo对象供Bar对象内部使用,但我不想要客户端代码调用

c++ - 模板化 ostream 重载歧义错误 : basic_ostream<char> vs const char[]

我正在尝试了解ostream重载。考虑一下#includeusingstd::ostream;enumclassA{a1,a2,a3};templateostream&operator编译时出现如下错误test.cpp:13:17:error:ambiguousoverloadfor‘operator}’and‘constchar[3]’)returnout虽然取消注释正常功能和注释模板版本工作正常。为什么二义性不是在正常功能中,为什么是模板化版本 最佳答案 非模板运算符不会引起任何歧义,因为该运算符本身无法解决此调用:return