std::optional の推論ガイド
From cppreference.com
| ヘッダ <optional> で定義 |
||
| template< class T > optional(T) -> optional<T>; |
(C++17以降) | |
暗黙的な推論ガイドでは見逃されるエッジケース、特にコピー不能な引数や配列からポインタへの変換を考慮するため、std::optional には1つの推論ガイドが提供されます。
[編集] 例
このコードを実行
#include <optional> #include <type_traits> int main() { int a[2]; std::optional oa{a}; // uses explicit deduction guide static_assert(std::is_same_v<decltype(oa), std::optional<int*>> == true); }