雖然實施std::experimental::optional
(cppreference.com)我被特定構造的規範,即困惑:的std ::實驗::可選<T>實現:Constexpr構造混亂
constexpr optional(const T& value); // (4)
(Source)
該構造函數允許optional<T>
用於簡單破壞類型T
,可在constexpr
上下文中構造。雖然第一個要求,即在這種情況下關閉用戶提供的析構函數以使文字類型爲optional<T>
可以直接解決,但我不知道如何解決放置的限制 - 新增不允許在constexpr 。
我以爲我應該實施optional<T>
使用std::aligned_storage<T>
允許類型T
非默認可構造和滿足任何對齊要求,如果適用。但正如我所說,constexpr
禁止我在該特定構造函數中使用放置新元素。
我需要多少咖啡,但在這裏沒有看到明顯的解決方案嗎?
謝謝
可能的重複[如何使用std :: optional?](http://stackoverflow.com/questions/16860960/how-should-one- use-stdoptional) – Matriac
@Matriac這是一個關於實現方面的問題。 – nshct
一個'union'可能適用於這個特定的構造函數,但我不確定它足以處理所有的情況。 – hvd