//===--- MSVCErrorWorkarounds.h - Enable future<Error> in MSVC --*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // MSVC's promise/future implementation requires types to be default // constructible, so this header provides analogues of Error an Expected // that are default constructed in a safely destructible state. // // FIXME: Kill off this header and migrate all users to Error/Expected once we // move to MSVC versions that support non-default-constructible types. // //===----------------------------------------------------------------------===// #ifndef LLVM_SUPPORT_MSVCERRORWORKAROUNDS_H #define LLVM_SUPPORT_MSVCERRORWORKAROUNDS_H #include "llvm/Support/Error.h" namespace llvm { // A default-constructible llvm::Error that is suitable for use with MSVC's // std::future implementation which requires default constructible types. class MSVCPError : public Error { … }; // A default-constructible llvm::Expected that is suitable for use with MSVC's // std::future implementation, which requires default constructible types. template <typename T> class MSVCPExpected : public Expected<T> { … }; } // end namespace llvm #endif // LLVM_SUPPORT_MSVCERRORWORKAROUNDS_H