簡體   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