這是將所有構造函數轉發給成員數據結構的好方法嗎?將構造函數轉發給成員對象
template<typename VectorData>
class VectorFunctionality
{
VectorData data;
public:
VectorFunctionality() = default;
VectorFunctionality(const VectorFunctionality&) = default;
template<typename ...Args>
VectorFunctionality(Args... args) : data(std::forward<Args>(args)...) {};
};
VectorData可以是std ::陣列,標準::矢量等 VectorFunctionality繼承所有VectorData c'tors的。 這有助於避免在VectorFunctionality中寫入許多c'tors,其他的爲std :: array和std :: vector寫入其他字符。
如果編譯器支持C++ 11構造函數繼承,也許只是使用'private'繼承,在構造函數中繼承。免責聲明:我還沒有嘗試過。 –
如果你這樣不小心編寫它,那麼'std :: is_constructible :: value'對於任何'Args ...'選擇都是正確的,這可能是不可取的。 –
也使用'VectorFunctionality(Args && ... args)'來隱含地轉發參數。在一般情況下,我不認爲這提供了一個很好和簡單的API。用戶不會輕易理解構造函數的用法,除非你有一個好的文檔。 –