2014-10-16 57 views
3

是std :: tuple需要使用空基類優化嗎?

std::is_empty<std::tuple<Args...>>::value 

返回true,如果在Args每一個類型是空的? gcc 4.9中的快速測試表明這是這種情況,但標準要求它嗎?

+2

誰說'tuple'類甚至可以繼承任何東西? – jrok 2014-10-16 14:00:56

+2

@jrok:沒有人說。問題是問是否是這樣。 – 2014-10-16 14:05:25

+0

就我所能讀的標準而言,似乎對元組實現沒有要求。 – Bulletmagnet 2014-10-16 14:23:26

回答

6

不,不要求tuple使用繼承來啓用空基類優化。

元組庫的唯一文本規範是:

本小節描述的元組庫,提供了一個元組類型作爲類模板的元組,可以用 任意數量的參數被實例化。每個模板參數指定元組中元素 的類型。因此,元組是異構的,固定大小的值集合。具有兩個參數的 元組的實例類似於具有相同兩個參數的對的實例化。

沒有提及任何實現細節;並且模板規範開始:

template <class... Types> 
class tuple { 

未指定它必須從任何東西繼承。

+0

+1我仍然覺得這個問題有點奇怪,但這是非常準確的答案。 – 2014-10-16 15:54:39