1//===-- None.h - Simple null value for implicit construction ------*- C++ -*-=//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This file provides None, an enumerator for use in implicit constructors
10// of various (usually templated) types to make such construction more
11// terse.
12//
13//===----------------------------------------------------------------------===//
14
15#ifndef LLVM_ADT_NONE_H
16#define LLVM_ADT_NONE_H
17
18namespace llvm {
19/// A simple null object to allow implicit construction of Optional<T>
20/// and similar types without having to spell out the specialization's name.
21// (constant value 1 in an attempt to workaround MSVC build issue... )
22enum class NoneType { None = 1 };
23const NoneType None = NoneType::None;
24}
25
26#endif
27