17ad046f5968d4709c3c68d165387d13f1da7bab6Nicolas Capens//===-- None.h - Simple null value for implicit construction ------*- C++ -*-=//
27ad046f5968d4709c3c68d165387d13f1da7bab6Nicolas Capens//
37ad046f5968d4709c3c68d165387d13f1da7bab6Nicolas Capens//                     The LLVM Compiler Infrastructure
47ad046f5968d4709c3c68d165387d13f1da7bab6Nicolas Capens//
57ad046f5968d4709c3c68d165387d13f1da7bab6Nicolas Capens// This file is distributed under the University of Illinois Open Source
67ad046f5968d4709c3c68d165387d13f1da7bab6Nicolas Capens// License. See LICENSE.TXT for details.
77ad046f5968d4709c3c68d165387d13f1da7bab6Nicolas Capens//
87ad046f5968d4709c3c68d165387d13f1da7bab6Nicolas Capens//===----------------------------------------------------------------------===//
97ad046f5968d4709c3c68d165387d13f1da7bab6Nicolas Capens//
107ad046f5968d4709c3c68d165387d13f1da7bab6Nicolas Capens//  This file provides None, an enumerator for use in implicit constructors
117ad046f5968d4709c3c68d165387d13f1da7bab6Nicolas Capens//  of various (usually templated) types to make such construction more
127ad046f5968d4709c3c68d165387d13f1da7bab6Nicolas Capens//  terse.
137ad046f5968d4709c3c68d165387d13f1da7bab6Nicolas Capens//
147ad046f5968d4709c3c68d165387d13f1da7bab6Nicolas Capens//===----------------------------------------------------------------------===//
157ad046f5968d4709c3c68d165387d13f1da7bab6Nicolas Capens
167ad046f5968d4709c3c68d165387d13f1da7bab6Nicolas Capens#ifndef LLVM_ADT_NONE_H
177ad046f5968d4709c3c68d165387d13f1da7bab6Nicolas Capens#define LLVM_ADT_NONE_H
187ad046f5968d4709c3c68d165387d13f1da7bab6Nicolas Capens
197ad046f5968d4709c3c68d165387d13f1da7bab6Nicolas Capensnamespace llvm {
207ad046f5968d4709c3c68d165387d13f1da7bab6Nicolas Capens/// \brief A simple null object to allow implicit construction of Optional<T>
217ad046f5968d4709c3c68d165387d13f1da7bab6Nicolas Capens/// and similar types without having to spell out the specialization's name.
227ad046f5968d4709c3c68d165387d13f1da7bab6Nicolas Capensenum class NoneType { None };
237ad046f5968d4709c3c68d165387d13f1da7bab6Nicolas Capensconst NoneType None = None;
247ad046f5968d4709c3c68d165387d13f1da7bab6Nicolas Capens}
257ad046f5968d4709c3c68d165387d13f1da7bab6Nicolas Capens
267ad046f5968d4709c3c68d165387d13f1da7bab6Nicolas Capens#endif
27