草庐IT

most_recent_conversations

全部标签

url - 版本化 URL : how can I tell search engines about more recent versions of the current page?

我将通过比较两个项目的托管文档来进行解释:PostgreSQL和Django。PostgreSQL项目的文档遵循架构http://www.postgresql.org/docs/.,而Django项目的文档遵循​​URL模式https://docs.djangoproject.com/en/..然而,谷歌对这些项目的处理方式却截然不同:当在谷歌上搜索“Djangofoobar”时,结果都链接到最新版本,这可能是所希望的;但是当在Google上搜索“Postgresfoobar”时,结果链接到各种不同的版本,其中一些版本非常旧。似乎Django项目有一些技术可以通知谷歌最新的文档。但是,

C++ 错误 : operator []: 2 overloads have similar conversions

templateclassv3{private:T_a[3];public:T&operator[](unsignedinti){return_a[i];}constT&operator[](unsignedinti)const{return_a[i];}operatorT*(){return_a;}operatorconstT*()const{return_a;}v3(){_a[0]=0;//works_a[1]=0;_a[2]=0;}v3(constv3&v){_a[0]=v[0];//Error1errorC2666:'v3::operator[]':2overloadshave

c++ - 为什么我会收到 Wsign-conversion 警告?

我有以下代码:templatestructwrapper{Tt;operatorT(){returnt;}Tget(){returnt;}};intmain(){inta[10];int*x=a;wrappery{2};std::cout当我使用-Wsign-conversion在gcc上编译它(在7.3.0和8.2.0上测试)时,我收到“警告:从‘longunsignedint’转换为‘longint’可能改变结果的符号”。如果y的类型为longunsignedint,则不会出现警告。此外,当我显式调用y.get()时,也没有警告:std::cout为什么会这样?是否有一些特殊的指针

c++ - C4244 : '+=' : conversion from 'std::streamsize' to 'size_t' , 可能丢失数据

我已将我的VC++项目从VS2008迁移到VS2013并收到一些警告,例如:C4244:'+=':conversionfrom'std::streamsize'to'size_t',possiblelossofdata.如何解决这些类型的警告? 最佳答案 在MSVC2013中std::streamsize是:typedef_Longlongstreamsize;typedef_LONGLONG_Longlong;#define_LONGLONG__int64size_t是:typedefunsigned__int64size_t;因

c++ - 简单(moSTLy)变量解析器

在我的一个项目中,我需要能够提供一个非常简单的变量查找和替换解析器(主要用于路径)。变量主要在启动期间使用,偶尔用于访问文件(不是程序的主要功能,只是加载资源),因此解析器不需要高性能。但是,我非常希望它是线程安全的。解析器需要能够存储一组变量(目前为map)并能够用字符串中的相应值替换标记。变量值可能包含其他变量,这些变量将在使用变量时解决(添加时不会,因为变量可能会随着时间的推移而添加)。当前的变量语法看起来像这样:$basepath$/resources/file.txt/$drive$/$folder$/path/file我当前的解析器使用一对stringstreams(“ou

c++ - G++ 警告 : narrowing conversion of

我正在尝试从sourceforge编译hosts3d,它确实编译但生成了几个缩小错误。我不知道如何解决这个问题,但我们将不胜感激任何帮助。我怀疑我可以下载以前版本的编译器,我可能最终会这样做,但现在……c++11g++-Wall-O2-c-osrc/glwin.osrc/glwin.cppsrc/glwin.cpp:成员函数中'intMyGLWin::AddInput(int,int,unsignedint,int,constchar*,bool)':src/glwin.cpp:983:147:warning:narrowingconversionof'max'from'int'to'

c++ - "C++ most vexing parse"的运行时行为

在尝试回答this时我发现没有()(调用“C++最烦人的解析”)的问题g++的输出是1(可以在这里看到:http://ideone.com/GPBHy),其中VisualStudio给出链接器错误。我无法理解输出如何可以1,有什么线索吗? 最佳答案 正如问题的答案已经解释的那样,由于“最令人烦恼的解析”语句而不是定义一个名为str的对象与两个istream_iterators指定其初始值设定项,被解析为名为str的函数的声明返回string.所以程序的简单版本解析为,thisonlinesample:#includevoiddoSo

c++ - 有没有办法强制 "most vexing parse"成为错误,即使是逐个类?

是否有可能(对A类进行任何修改)进行以下工作?即,使最令人烦恼的解析错误?classA{};intmain(){Aa();//canthisbeforcedtobeanerror??Ab;//thisshouldwork} 最佳答案 类A的任何修改都不会影响声明Aa();的解析方式。解析器甚至在查看A的定义之前就确定这是一个函数声明。事实上,A的定义甚至不需要可见来解析这个语句;预先声明就足够了。但是,编译器通常会对此发出警告,您可能会将其变成错误。例如,对于clang,您可以使用标志-Werror=vexing-parse。str

c++ - 菱形多态继承 : sizeof Most derived Class

我知道菱形继承会导致歧义,可以通过virtualBaseClasses使用继承来避免,问题不在于此。当类是多态时,问题是关于菱形层次结构中最派生类的大小。这是示例代码和示例输出:#includeusingnamespacestd;classBase{public:virtualvoiddoSomething(){}};classDerived1:publicvirtualBase{public:virtualvoiddoSomething(){}};classDerived2:publicvirtualBase{public:virtualvoiddoSomething(){}};cl

C++ 重载歧义 : conversion versus promotion with primitive types

在这段代码中:voidf(floatf,longinti){cout有一个歧义。Checkitout!.但是,第二个参数是有符号整数。将int绑定(bind)到longint参数需要提升,但对于float,则需要转换。由于第一个参数是关于两个重载的完全匹配,所以它不算数。但是关于第二个参数,它在第一次过载(提升)上的排名优于在第二个(转化)上的排名。为什么会出现解析歧义,而不是选择第一个重载? 最佳答案 int到long是一个转换。short到int是一种提升。(有关积分促销的完整列表,请参阅[conv.prom]。)同理,floa