草庐IT

expose_used

全部标签

c++ - 复制省略 : move constructor not called when using ternary expression in return statement?

考虑以下示例:#includeclassobject{public:object(){printf("constructor\n");}object(constobject&){printf("copyconstructor\n");}object(object&&){printf("moveconstructor\n");}};staticobjectcreate_object(){objecta;objectb;volatileinti=1;//With#if0,object'scopyconstructoriscalled;otherwise,itsmoveconstructor

C++ TR1 : how to use the normal_distribution?

我正在尝试使用C++STDTechnicalReport1扩展生成服从正态分布的数字,但是此代码(改编自thisarticle):mt19937eng;eng.seed(SEED);normal_distributiondist;//XXXifIusetheonebelowitexitstheforloop//uniform_intdist(1,52);for(unsignedinti=0;i仅打印1条“Generating...”日志消息,然后永远不会退出for循环!如果我改用我注释掉的发行版,它就会终止,所以我想知道我做错了什么。有什么想法吗?非常感谢!

c++ - `using` 只有基类的一些重载

考虑一个b类,它有两个重载的foo方法:structb{voidfoo(float){}voidfoo(constchar*){}};如果我从b派生dprivately,我可以useusingtoexposeb'sfoo:structd:privateb{usingb::foo;};但是,这会暴露所有重载。有没有办法只公开其中一个(比如float一个)?例如,在下面,我希望最后一行编译失败:dt;t.foo(3.13);//dshouldhavethisoverloadt.foo("hello");//dshouldn'thavethisoverload我尝试了各种写法usingb::

c++ - 为什么无法在 C++ 中撤消 'using'?

我经常发现自己想要一种方法来撤消using语句的效果或包含所有命名空间(例如std)但排除要替换的位(例如cout)。由于某种原因,这是不可能的。我想知道是否有人知道为什么决定不将此功能添加到语言中?有什么技术原因吗?我认为它不仅没有被遗忘,因为它似乎也没有为C++0x指定。澄清一下,我并不是在寻找变通办法,因为Google可以向我展示这些变通办法。我正在寻找关于为什么这是不可能的,以及为什么没有考虑(据我所知)将其包含在0x中的解释。 最佳答案 using指令将一个名称或一组名称带入给定的声明范围。你不能因为你不能说的原因而“取消

当存在移动和复制构造函数时,C++ 默认构造函数未使用 "using"继承

classA{public:A(){};};classB:publicA{public:usingA::A;B(constB&)=default;B(B&&)=default;};Bb;编译器(g++(5.4.0-6ubuntu1)/c++11)说“没有匹配函数调用B::B()”,并将复制和移动构造函数列为候选。如果我将那些默认的注释掉然后编译。是什么原因造成的?它们被明确违约有什么区别?如果没有这两行,它们无论如何都会被默认。 最佳答案 在C++17之前,基类的默认构造函数不会是inherited通过使用:Allcandidate

c++ - 在 ';' 之前缺少 'using'

我在使用以下代码时遇到此编译错误:errorC2143:syntaxerror:missing';'before'using'#include#include#include#include#include"s.h"usingnamespacestd;这怎么可能?如何修复? 最佳答案 "s.h"可能包含未以;终止的类声明当您包含一个header时,C预处理器会将header的内容替换为内联,因此如果您查看s.h,您可能会发现未被;终止的内容/p> 关于c++-在';'之前缺少'using

【已解决】redis启动错误: Warning: no config file specified, using the default config. In order to specify a

Warning:noconfigfilespecified,usingthedefaultconfig.Inordertospecifyaconfigredis启动报如下错误:意思是:启动时无法找到配置文件,远程无法连接解决方法:第一种:在cmd命令行中执行redis-server.exeredis.windows.conf第二种:在redis的根目录下新建一个start.bat文件,将redis-server.exeredis.windows.conf放在文件里,双击start.bat即可启动。也可以解决上述问题下面说说一个小问题:如何更改密码?首先如果是想一劳永逸,那么在redis.win

android - 适用于 Android 的 Kotlin 扩展 : How to use bundleOf

文档说:funbundleOf(varargpairs:Pair):BundleReturnsanewBundlewiththegivenkey/valuepairsaselements.我试过了:valbundle=bundleOf{Pair("KEY_PRICE",50.0)Pair("KEY_IS_FROZEN",false)}但它显示错误。 最佳答案 如果它需要一个vararg,您必须提供参数作为参数,而不是lambda。试试这个:valbundle=bundleOf(Pair("KEY_PRICE",50.0),Pair(

android - 适用于 Android 的 Kotlin 扩展 : How to use bundleOf

文档说:funbundleOf(varargpairs:Pair):BundleReturnsanewBundlewiththegivenkey/valuepairsaselements.我试过了:valbundle=bundleOf{Pair("KEY_PRICE",50.0)Pair("KEY_IS_FROZEN",false)}但它显示错误。 最佳答案 如果它需要一个vararg,您必须提供参数作为参数,而不是lambda。试试这个:valbundle=bundleOf(Pair("KEY_PRICE",50.0),Pair(

c++ - 使用保留标识符时,using 命令是否应该发出警告?

使用线路时usingstd::literals::chrono_literals::operator""s;在g++6.3.0中,编译器发出一条警告:warning:literaloperatorsuffixesnotprecededby'_'arereservedforfuturestandardizationusingstd::literals::chrono_literals::operator""s;MSVS中也发出了类似的警告。然而,clang3.8.0没有发出这样的警告。因为operator""s是由chrono库的标准定义的,因为我们只是导入名称而不是定义名称,所以这不应