std::tuple
包含,除其他外,以下的構造:所有的std :: tuple構造函數都是必需的嗎?
explicit tuple(const Types&... args);
template< class... UTypes >
explicit tuple(UTypes&&... args);
兩者在它們初始化每個與args
對應的值的元素等效的描述。唯一的區別是在第二個參數被轉發。
從我對rvalue引用的理解中,我不明白爲什麼第一個版本是必需的,因爲可以將相同的參數傳遞到第二個版本。這些引用將被轉發,沒有人會更聰明,尤其是沒有提到移動語義。
任何人都可以解釋它是什麼使得兩個構造函數都是必需的嗎?
第二個版本是SFINAE-d出過載如果不是全部設置的'UTypes'是隱式轉換爲對應的'Types' – jrok