草庐IT

base_of_five_defaults

全部标签

c++ - 错误 : jump to label 'foo' crosses initialization of 'bar'

以下C++示例无法使用gcc或clang进行编译,但仅使用ICC生成警告,而使用MSVC则完全不生成任何警告:intmain(intargc,char*argv[]){if(argcg++:init.cpp:13:error:jumptolabel‘clean_up’init.cpp:4:error:fromhereinit.cpp:7:error:crossesinitializationof‘inti’clang++:init.cpp:4:9:error:cannotjumpfromthisgotostatementtoitslabelgotoclean_up;^init.cpp:

c++ - 如何在 C++ 中创建一个 "default"流插入运算符?

我有一个类似于boost::any的类,因为它是一个模板化的容器类。我想要一种将包含的值写入字符串的方法。但是,如果包含的类型不提供流插入运算符,我希望我的方法返回一些默认字符串而不是编译失败。下面是我最接近的,应该清楚我要做什么:namespaceW{namespacehide{templatestd::ostream&operatorstructC{Tt_;std::stringToString()const{usingnamespacehide;std::ostringstreamoss;oss这很好用,但有一些注意事项。例如,如果我想为一个类实际提供一个重载的插入运算符,那么该

如何使用strspn模仿std :: string的find_first_not_of

我正在尝试创建类似于std::String的自定义字符串类。而且我在实现“find_first_not_of”时遇到了麻烦。这是我的测试代码#includeclassString{private:char*m_data;intm_length;char*alloc(intsize);intlength()const{returnm_length;}intsize()const{returnm_length;}constchar*c_str()const{returnm_data;}public:String(constchar*str=0);intfind_first_not_of(const

c++ - 使用 boost::assign::list_of 构造 std::vector 时的歧义

这段代码:std::vector(boost::assign::list_of(1)(2)(3));给出错误:main.cpp:Inmemberfunction'void::RequestHandler::processRequest(Foo&,Bar,unsignedint,unsignedint*,constchar*,boost::shared_ptr&)':main.cpp:450:error:callofoverloaded'vector(boost::assign_detail::generic_list&)'isambiguous/4.4.2/bits/stl_vecto

c++ - 为什么 std::none_of 比手动循环更快?

我将std::none_of的性能与三种不同的手动实现进行了基准测试,使用i)for循环,ii)基于范围的for循环和iii)迭代器。令我惊讶的是,我发现虽然所有三个手动实现花费的时间大致相同,但std::none_of明显更快。我的问题是-为什么会这样?我使用了Google基准库并使用-std=c++14-O3编译。运行测试时,我将进程的亲和性限制为单个处理器。我使用GCC6.2得到以下结果:BenchmarkTimeCPUIterations--------------------------------------------------------benchmarkSTL288

c++ - Qt : After installation of VS2012 LNK1123 failure during conversion to COFF

之后我安装了VS2012我的Qt项目不再编译(我的电脑上有VS2010和VS2012)。消息:LNK1123:转换为COFF期间失败:文件无效或损坏。以前只用VS2010没问题。对于VS2012环境,建议(参见SOhere):使用EnableIncrementalLinkingNO编译卸载.net4.5因为我没有将Qt与VS2012结合使用(所以没有插件),所以我不能setuptheprojectasmentioned.我也不能卸载.net4.5(另一个项目需要)。有机会解决这个问题吗?我有一些相关的问题是否可以针对VS2012C++编译器进行编译?Hereitsays为此,我需要自己

c++ - 类 std::out_of_range 在哪里完全定义?

我正在我的UbuntuLinux上的/usr/include/c++下搜索。在/usr/include/c++/stdexcept中,我发现了这个:classout_of_range:publiclogic_error{public:explicitout_of_range(conststring&__arg);};但是我在任何地方都找不到out_of_range()构造函数的定义。此外,当STL抛出out_of_range()异常时,它使用(示例取自STL_vector.h):__throw_out_of_range(__N("vector::_M_range_check"));而且

c++ - 如果 Derived 不向 Base 添加新成员(并且是 POD),那么可以安全地完成什么样的指针转换和取消引用?

(这是关于未定义行为(UB)的另一个问题。如果这段代码在某些编译器上“有效”,那么这在UB领域就没有任何意义。这是可以理解的。但是我们到底在下面的哪一行跨入UB?)(关于SO已经有很多非常相似的问题,例如(1)但我很好奇在取消引用指针之前可以安全地使用指针做什么。)从一个非常简单的基类开始。没有virtual方法。无继承。(也许这可以扩展到任何POD?)structBase{intfirst;doublesecond;};然后是添加(非virtual)方法但不添加任何成员的简单扩展。没有virtual继承。structDerived:publicBase{intfoo(){return

c++ - libpng 错误 : PNG unsigned integer out of range

当尝试从内存中读取PNG时,我遇到了这个奇怪的错误:libpngerror::PNGunsignedintegeroutofrange这个错误是由引起的png_read_info(png_ptr,info_ptr);它使用以下处理程序:staticvoidReadDataFromBuffer(png_structppng_ptr,png_bytepoutBytes,png_size_tbyteCountToRead){PNGDataPtrdataptr=(PNGDataPtr)png_get_io_ptr(png_ptr);png_uint_32i;coutlenpdataptr->l

c++ - boost::variant for boost::arrays of arbitrary size

我想本着的spirit创建一个boost::varianttypedefboost::variant,boost::array,boost::array,...>any_int_array;泛化为N作为模板的第二个值。换句话说,一个包含任意大小数组的boost::variant。这可能吗?请注意,在上面的示例中,boost::array是我的案例之一,但对于采用单个int的任何类,它都需要是一个可行的解决方案值作为模板参数。 最佳答案 既然你在谈论具有静态已知容量的类型,你就不能用一些模板元编程来解决这个问题吗?LiveonColi