Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 模板空括号初始化演绎_C++_Templates_Template Argument Deduction - Fatal编程技术网

C++ 模板空括号初始化演绎

C++ 模板空括号初始化演绎,c++,templates,template-argument-deduction,C++,Templates,Template Argument Deduction,我认为模板函数可以有默认参数(不是模板参数而是运行时参数)。我们还可以使用空括号初始化类。但是编译器如何匹配模板呢 这段代码为什么要编译,编译器如何进行演绎,以及这个函数调用示例中的参数是什么 据我所知: 默认括号初始化调用空构造函数,该构造函数是隐式创建的,因为没有用户定义的构造函数或用户定义的默认构造函数。也就是说,我们可以用{}初始化任何包。。因此,扣除额不适用于此,因为我们不能选择一个包,每个包都是候选包。可能默认的变量模板参数是(无参数) 模板类包{}; 模板 内联自动生成(包={})

我认为模板函数可以有默认参数(不是模板参数而是运行时参数)。我们还可以使用空括号初始化类。但是编译器如何匹配模板呢

这段代码为什么要编译,编译器如何进行演绎,以及这个函数调用示例中的参数是什么

据我所知: 默认括号初始化调用空构造函数,该构造函数是隐式创建的,因为没有用户定义的构造函数或用户定义的默认构造函数。也就是说,我们可以用{}初始化任何包。。因此,扣除额不适用于此,因为我们不能选择一个包,每个包都是候选包。可能默认的变量模板参数是(无参数)

模板类包{};
模板
内联自动生成(包={}){
}
int main(){make();}
(用通用条款汇编) 注意:我认为不是,但默认参数可能有用:调用函数的两种方法:make()(正常使用)或make(myPack),用于打包变量。

给定
make()
,导出的
参数
为空<代码>生成()
make()具有相同的效果在这种情况下

模板参数是,此处不提供模板参数。请注意,函数默认参数不参与。然后,
Args
被推断为空

如果参数包显示为最后一个p,则类型p与调用的每个剩余参数的类型a相匹配。每个匹配项都会推断包扩展中下一个位置的模板参数:

无法从函数默认参数的类型推断类型模板参数:

make()
make()具有相同的效果
通常(不适用于OP的情况),
make()
是否排除非模板
make
函数?
    template<typename...> class pack {};

    template<class... Args>
    inline auto make(pack<Args...> = {}) {

    }

    int main() { make(); }