правила вывода для std::optional
Материал из cppreference.com
<tbody>
</tbody>
| Определено в заголовочном файле <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);
}