Namespaces
Variants

deduction guides for std::optional

From cppreference.net
Utilities library
定义于头文件 <optional>
template < class T >
optional ( T ) - > optional < T > ;
(C++17 起)

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);
}