Upon investigation, I discovered a newer version of the compiler and IDE. Updating to "Version 15.5.5" produced the following results when compiling the same translation unit:
1>c:\users\vinnie\src\boost\boost\outcome\detail\value_storage.hpp(141): 1>fatal error C1001: An internal error has occurred in the compiler. 1>(compiler file 'msc1.cpp', line 1507)
Is this a supported configuration?
It certainly is. Microsoft itself runs Outcome as part of the Visual Studio compiler validation suite!
I have confirmed this ICE in MSVC (15.5.4). It also occurs in Microsoft's C2 clang edition. Shame on Microsoft, an empty source file instantiating nothing should never, *ever* ICE the compiler, no matter the headers included. CC Stephan and Andrew, because this is *bad*. Vinnie if you choose the LLVM clang toolset, all will work correctly. I suggest a minimum of clang 6.0, it actually somewhat works on Windows when targeting the MSVC ABI, even produces usable debug info in the Visual Studio debugger. The standalone edition of Outcome is not affected. So something in Boost + Outcome is causing this ICE. Seeing as LLVM clang works correctly with proposed Boost.Outcome, I am going to assert - not claim - that this problem is 100% on Microsoft, and nothing to do with Boost or Outcome or proposed Boost.Outcome. For the record, my main development platform for Outcome and AFIO is Windows with MSVC. Outcome has received almost all its testing on MSVC. Whatever is tripping this MSVC ICE is not something I have seen to date (the non-trivial value_storage implementation). Niall -- ned Productions Limited Consulting http://www.nedproductions.biz/ http://ie.linkedin.com/in/nialldouglas/