Namespaces
Variants

deduction guides for std::optional

From cppreference.net
Utilities library
ヘッダーで定義 <optional>
template < class T >
optional ( T ) - > optional < T > ;
(C++17以降)

1つの 推論ガイド std::optional に対して提供されており、暗黙の推論ガイドでは対応しきれないエッジケース、特にコピー不可能な引数と配列からポインタへの変換を考慮しています。

#include <optional>
#include <type_traits>
int main()
{
    int a[2];
    std::optional oa{a}; // 明示的な推論ガイドを使用
    static_assert(std::is_same_v<decltype(oa), std::optional<int*>> == true);
}