namespace std {
template <class T>
optional(T) -> optional<T>;
}
概要
std::optional
クラステンプレートの型推論補助。有効値から推論する。
例
#include <cassert>
#include <optional>
#include <type_traits>
int main()
{
std::optional p1 = 3;
assert(p1.value() == 3);
static_assert(std::is_same_v<decltype(p1)::value_type, int>);
// 配列の場合、配列からポインタへの変換が行われる
std::optional p2 = "Hello";
static_assert(std::is_same_v<decltype(p2)::value_type, const char*>);
}
出力
バージョン
言語
- C++17
処理系
- Clang:
- GCC: 7.2 ✅
- ICC: ??
- Visual C++: ??