1 | //===-- None.h - Simple null value for implicit construction ------*- C++ -*-=// |
2 | // |
3 | // The LLVM Compiler Infrastructure |
4 | // |
5 | // This file is distributed under the University of Illinois Open Source |
6 | // License. See LICENSE.TXT for details. |
7 | // |
8 | //===----------------------------------------------------------------------===// |
9 | // |
10 | // This file provides None, an enumerator for use in implicit constructors |
11 | // of various (usually templated) types to make such construction more |
12 | // terse. |
13 | // |
14 | //===----------------------------------------------------------------------===// |
15 | |
16 | #ifndef LLVM_ADT_NONE_H |
17 | #define LLVM_ADT_NONE_H |
18 | |
19 | namespace llvm { |
20 | /// A simple null object to allow implicit construction of Optional<T> |
21 | /// and similar types without having to spell out the specialization's name. |
22 | // (constant value 1 in an attempt to workaround MSVC build issue... ) |
23 | enum class NoneType { None = 1 }; |
24 | const NoneType None = NoneType::None; |
25 | } |
26 | |
27 | #endif |
28 | |