繁体   English   中英

默认参数的默认构造

[英]Default construction for default parameters

前提:我很懒。 而且我不喜欢排长队。

假设您有一个采用一个参数的函数,并且想要为该参数提供默认值。 假设参数是std::map ,默认值只是一个空映射。 做到这一点的方法是

void foo (std::map<Key,Value> the_map = std::map<Key,Value>());

现在,如果Key和/或Value的名称很长(可能是模板化的),则函数声明会很长。 有一种写类似的东西的方法会很好

void foo (std::map<Key,Value> the_map = auto);

现在,我知道这不是使用关键字auto ,而只是为了解释这个概念:我不想因为已经写下一个简单的默认构造的默认值而将已经很长的函数声明的长度加倍元件。 我只想告诉编译器“看,在那建立一个默认的”。 有没有办法做到这一点? 另外,有人也觉得有这种需要吗?

注意:是的,我可以typedef映射类型并使用短名称。 但是我想换一种方式。 注意2:是的,我也可以重载该函数,以便它的一个版本不带参数,而另一个版本则带参数。 但是我想换一种方式。

我猜我正在寻找的是“默认默认参数” ...

您可以将{}用作初始化程序子句 ,这将对参数进行值初始化。

void foo(std::map<K, V> the_map = {});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM