草庐IT

default-parameters

全部标签

c++ - C++ 模板的部分特化 : template parameter not deducible

下面的代码工作正常:templateclassFib{};templateclassFib{};但是下面的代码显示错误为:Error:templateparametersnotdeducibleinpartialspecialization:templateclassFib{};templateclassFib{};你能解释一下这种行为的原因吗? 最佳答案 我相信您只是缺少部分特化的正确语法:templateclassFib{};templateclassFib{};模板上的第一个参数是类型,而第二个只是一个常量值。

c++ - 视觉 C++ :error C2664: 'GetModuleFileNameW' : cannot convert parameter 2 from 'char [260]' to 'LPWCH'

当我尝试编译我的项目时,我遇到了一些我无法解决的错误。无论如何这是代码之一:public:voidInit(HMODULEhModule,stringFilename){charszLoc[MAX_PATH];GetModuleFileName(hModule,szLoc,sizeof(szLoc));char*dwLetterAddress=strrchr(szLoc,'\\');*(dwLetterAddress+1)=0;strcat(szLoc,Filename.c_str());__OutStream.open(szLoc,ios::app);}错误是:errorC2664:

keil5【问题解决】提示:Target ‘LED‘ uses ARM-Compiler ‘Default Compiler Version 5‘ which is not available

文章目录1、问题描述:2、问题解决:2-1、原因分析:2-2、下载CompilerVersion5编译器2-3、安装CompilerVersion5编译器2-4、导入CompilerVersion5编译器的路径:===============================================1、问题描述:keil5选择ARMCompiler:CompilerVersion5,提示显示Miss:CompilerVersion5,编译之后提示:***Target‘LED’usesARM-Compiler‘DefaultCompilerVersion5’whichisnotavaila

c++ - 可变参数模板 : Pass parameter pack without expansion

旧的Cstdio工具提供了一种使用vprintf工具传递可变参数集的方法。是否有类似的方式来传递C++0x可变模板参数包而不扩展它?如果您有一个采用可变参数模板参数包的派生类构造函数,并且需要简单地将其传递给基类构造函数,而不是将其解包,这可能会很有用。例如:templateBase::Base(constT&v,constArgs&...args){/*...expandargshere....*/}templateDerived::Derived(constT&v,constArgs&...args):Base(v,args){/*...don'texpandargs...*/}我

c++ - 具有依赖于早期参数的默认模板参数是否有效?

例如,以下代码片段可在VC++2010中编译:templatestructMatrix{};Matrixm;请注意,Columns的默认参数取决于Rows的参数值。但是C++11(或更早版本)中的这种标准行为是我可以在任何地方依赖的吗? 最佳答案 是的。事实上,这就是大量STL代码的工作原理。std::vector的定义如下:template>classvector这样你就不需要每次都指定allocator了。如果这样是无效的,我们将无法写:std::vectordata;你会把std::map写成:std::map,//map::

c++ - 在初始化构造函数时 {} 或 default 之间是否有任何差异

这三种默认类构造函数的方法之间是否有任何区别(无论多么微小):直接在header中使用{}://foo.hclassfoo{public:foo(){}}直接在header中使用default关键字://foo.hclassfoo{public:foo()=default;}在cpp中使用{}//foo.hclassfoo{public:foo();}//foo.cpp#include"foo.h"foo::foo(){} 最佳答案 是的,有区别。选项1和3是用户提供的。用户提供的构造函数是非平凡的,使类本身非平凡。这对如何处理类有

C++1 1's "default”只能应用于特殊成员函数?

=default是否只适用于特殊的成员函数?我尝试了以下但它没有编译:structA{A(int,char)=default;inti;charc;}; 最佳答案 是的,您只能显式默认特殊成员函数。来自[dcl.fct.def.default]:Afunctionthatisexplicitlydefaultedshall(1.1)—beaspecialmemberfunction,毕竟,只有特殊的成员函数是隐式默认的——所以为什么显式默认其他任何东西有意义?在这种情况下,您可以简单地删除构造函数并使A成为聚合。这将允许您使用列表初

c++ - 有没有办法将参数默认值设置为先前参数的函数? [C++]

我假设不是,但我只是想检查一下-在C++中是否有任何方法可以执行以下操作?显然,当我尝试下面的操作时,我得到了一个关于bar的基于范围的错误。voidfoo(Barbar,inttest=bar.testInt){...} 最佳答案 如果test的值无效,您可以检测到:voidfoo(Barbar,inttest=-1){//assuming-1isinvalidif(test==-1)test=bar.testInt;//...}如果没有,你总是可以使用重载函数:voidfoo(Barbar,inttest){//...}void

c++ - 最烦人的解析 : why doesn't `g( ( f() ) );` call `f` 's default constructor and pass the result to `g` 's ctor that takes a `f` ?

这不是Mostvexingparse:whydoesn'tAa(());work?的拷贝,它基于Aa());形式的解析,其OP认为可以使用额外的集合默认构造一个A对象括号。相比之下,我的问题是关于2个类,f和g,其中f具有默认构造函数,而g的构造函数采用f。我想用一个临时的f参数调用g的构造函数,而不使用统一的初始化语法。g的构造函数中有一个std::cout语句,因此缺少输出表示函数声明而不是g对象实例化。我在注释中用3个数字注释了示例代码。#1和#2编译时#3被注释掉,反之亦然:#includestructf{};structg{g(f){std::cout#1:我认为#1声明了一

c++ - 有类似 "default comparator"的东西吗?

我写了一个模板,它包装了一个std::vector以确保vector总是排序:templateclassSortedVector{public:SortedVector(bool(*comparator)(T,T)=DefaultComparator){this->comparator=comparator;}voidinsertValue(TnewElement){vect.insert(std::lower_bound(vect.begin(),vect.end(),newElement,comparator),newElement);}private:std::vectorvec