草庐IT

is_constexpr_copiable

全部标签

c++ - 对于内联函数和 constexpr 函数, "obey ODR"是什么意思?

我刚读到constexpr和inline函数遵循一个定义规则,但它们的定义必须相同。所以我试了一下:inlinevoidfoo(){return;}inlinevoidfoo(){return;}intmain(){foo();};错误:'voidfoo()'的重新定义,和constexprintfoo(){return1;}constexprintfoo(){return1;}intmain(){constexprx=foo();};错误:'constexprintfoo()'的重新定义那么究竟是什么意思,constexpr和inline函数可以服从ODR?

c++ - static_casting a constexpr void* 的结果是常量表达式吗?

clang正在拒绝gcc允许的这段代码:intmain(){staticconstexprconstvoid*vp=nullptr;staticconstexprconstchar*cp=static_cast(vp);}具有以下内容:error:constexprvariable'cp'mustbeinitializedbyaconstantexpressionstaticconstexprconstchar*cp=static_cast(vp);阅读完N3797中的最终list后5.9/2我没有看到任何禁止在常量表达式中使用static_cast的内容。我是在看错地方还是误读了什么

c++ - 没有优化的 g++ 4.9 上静态 constexpr 的 undefined reference

我有以下代码:#include#includeusingnamespacestd::chrono_literals;#defineMSG"hello"#defineDUR1000msclassmwe{public:staticconstexprautomsg=MSG;staticconstexprautodur_1=DUR;staticconstexprstd::chrono::millisecondsdur_2=DUR;staticconststd::chrono::millisecondsdur_3;staticconstexprdecltype(DUR)dur_4=DUR;};c

c++ - Fedora 22 - 编译 - __atomic_is_lock_free

我尝试在Fedora22上编译一个软件(SuperCollider),但我遇到了一个问题:libsupernova.a(server.cpp.o):Infunction`std::atomic::is_lock_free()const':/usr/include/c++/5.1.1/atomic:212:undefinedreferenceto`__atomic_is_lock_free'collect2:error:ldreturned1exitstatusserver/supernova/CMakeFiles/supernova.dir/build.make:96:recipefo

c++ - 错误 : imread is not a member of cv

我使用OpenCV3.0和Ubuntu14.04。我正在尝试使用opencv在ubuntu上编译一些代码。我收到错误"error:'imread'isnotamemberof'cv'"由于我以前的搜索知识,我尝试通过添加“highgui.h”进行编译。我使用:$g++main.cppHOG.cppHOGFeaturesOfBlock.cpp-I/usr/local/include/opencv-lml-lcvaux-highgui-lcv-lcxcore-ofeatureExtractor在终端上编译。有什么建议吗?问候。可以。 最佳答案

c++ - 为什么要在构造函数上使用 constexpr?

我知道constexpr允许您在编译时将对象用作常量,但是什么时候这会有益呢?我试图更好地理解关键字,但我找不到一个很好的例子来解释为什么需要它的构造函数。下面的两个例子都有效,那么为什么要将constexpr放在构造函数上呢?在构造函数上使用constexpr:#includeusingnamespacestd;classRect{public:constexprRect(intwidth,intheight):mWidth(width),mHeight(height){}constexprintgetArea()const{returnmWidth*mHeight;}private

c++ - std::experimental::optional inside constexpr 函数

我想在我的constexpr函数中使用可选的习惯用法来轻松地阐明变量是否已设置。我对std::experimental::optional的尝试:constexprboolcall(){std::experimental::optionalr;r=true;//Error//Similarerrorwith://r=std::experimental::optional(true);if(!r){returnfalse;}return*r;}我得到错误:调用非constexpr函数-所以赋值是不可能的,因为这个操作不能是constexpr(Example)。但如果我实现自己的(非常丑陋

c++ - 构造一个 constexpr std::weak_ptr

根据std::weak_ptr文档可以构造一个constexprweak_ptr:#includeconstexprweak_ptrfoo{};但是,使用clang尝试此操作会产生编译错误,提示constexpr变量不能具有非文字类型'conststd::weak_ptr',这是因为weak_ptr有一个用户提供的析构函数。(确实如此,查看libc++header)我的问题是,这是一个libc++错误,还是做constexprweak_ptr只是没有意义并且拥有constexpr默认构造函数是一个错误?我可以期待它在未来发挥作用吗? 最佳答案

C++/QML : ListView is not updated on dataChanged signal from QAbstractListModel

我正在尝试为大型动态C/Fortran模拟编写QMLGui。我要显示的数据存储在FortranCommonblock中,并按固定时间步长更新。我的问题是QMLListView在每个时间步后发出dataChanged信号时不会刷新,尽管Gui接收到该信号(测试在下面的代码中)。我可能错过了一些非常明显的东西,因为当我再次向下和向上轻弹我的ListView时,显示的数据已更新且正确(我猜是因为QML引擎会在元素“看不见”并返回时重新呈现它们再次进入)。所以唯一不起作用的是每次收到dataChanged信号时ListView都会更新,而不仅仅是在重新呈现时更新。下面是对我的方法和相关代码部分

c++ - 未对齐的内存访问 : is it defined behavior or not?

这个问题在这里已经有了答案:Whatdoesthestandardsayaboutunalignedmemoryaccess?(1个回答)关闭4年前。考虑以下代码:#includeintmain(){char*c=newchar('a');charac[4]={'a','b','c','d'};unsignedlonglongint*u=reinterpret_cast(c);unsignedlonglongint*uc=reinterpret_cast(&ac[3]);*u=42;*uc=42;std::cout这是否被视为有效代码,还是内存泄漏/未定义行为?我在问,因为通过:*u=