ned14 / outcome

Provides very lightweight outcome<T> and result<T> (non-Boost edition)
https://ned14.github.io/outcome
Other
675 stars 62 forks source link

Build fails with MSVC #266

Closed awvwgk closed 1 year ago

awvwgk commented 1 year ago

Trying to build outcome on Windows with MSVC results in error C2259 cannot instantiate abstract class.

Build error

FAILED: CMakeFiles/outcome_hl--experimental-core-result-status.dir/test/tests/experimental-core-result-status.cpp.obj 
C:\PROGRA~2\MICROS~1\2019\ENTERP~1\VC\Tools\MSVC\1416~1.270\bin\HostX64\x64\cl.exe  /nologo /TP -D_CRT_NONSTDC_NO_WARNINGS -I%SRC_DIR%\include -I%SRC_DIR%\quickcpplib\_install\include /DWIN32 /D_WINDOWS /W3    /O2 /Ob2 /DNDEBUG /EHsc /MD /W4 /permissive- -std:c++latest /showIncludes /FoCMakeFiles\outcome_hl--experimental-core-result-status.dir\test\tests\experimental-core-result-status.cpp.obj /FdCMakeFiles\outcome_hl--experimental-core-result-status.dir\ /FS -c %SRC_DIR%\test\tests\experimental-core-result-status.cpp
cl : Command line warning D9025 : overriding '/W3' with '/W4'
%SRC_DIR%\test\tests\experimental-core-result-status.cpp(109): error C2259: '_payload_domain': cannot instantiate abstract class
%SRC_DIR%\test\tests\experimental-core-result-status.cpp(109): note: due to following members:
%SRC_DIR%\test\tests\experimental-core-result-status.cpp(109): note: 'system_error2::status_code_domain::payload_info_t system_error2::status_code_domain::payload_info(void) noexcept const': is abstract
c:\bld\outcome-cpp_1657102439357\work\include\outcome\experimental\status-code\include\status_code_domain.hpp(408): note: see declaration of 'system_error2::status_code_domain::payload_info'
[22/250] Building CXX object CMakeFiles\outcome_hl--experimental-p0709a.dir\test\tests\experimental-p0709a.cpp.obj
FAILED: CMakeFiles/outcome_hl--experimental-p0709a.dir/test/tests/experimental-p0709a.cpp.obj 
C:\PROGRA~2\MICROS~1\2019\ENTERP~1\VC\Tools\MSVC\1416~1.270\bin\HostX64\x64\cl.exe  /nologo /TP -D_CRT_NONSTDC_NO_WARNINGS -I%SRC_DIR%\include -I%SRC_DIR%\quickcpplib\_install\include /DWIN32 /D_WINDOWS /W3    /O2 /Ob2 /DNDEBUG /EHsc /MD /W4 /permissive- -std:c++latest /showIncludes /FoCMakeFiles\outcome_hl--experimental-p0709a.dir\test\tests\experimental-p0709a.cpp.obj /FdCMakeFiles\outcome_hl--experimental-p0709a.dir\ /FS -c %SRC_DIR%\test\tests\experimental-p0709a.cpp
cl : Command line warning D9025 : overriding '/W3' with '/W4'
%SRC_DIR%\test\tests\experimental-p0709a.cpp(90): error C2259: '_arithmetic_errc_domain': cannot instantiate abstract class
%SRC_DIR%\test\tests\experimental-p0709a.cpp(90): note: due to following members:
%SRC_DIR%\test\tests\experimental-p0709a.cpp(90): note: 'system_error2::status_code_domain::payload_info_t system_error2::status_code_domain::payload_info(void) noexcept const': is abstract
c:\bld\outcome-cpp_1657102439357\work\include\outcome\experimental\status-code\include\status_code_domain.hpp(408): note: see declaration of 'system_error2::status_code_domain::payload_info'

System info

     active environment : base
    active env location : C:\Miniforge
            shell level : 1
       user config file : C:\Users\VssAdministrator\.condarc
 populated config files : C:\Miniforge\.condarc
                          C:\Users\VssAdministrator\.condarc
          conda version : 4.12.0
    conda-build version : 3.21.9
         python version : 3.9.13.final.0
       virtual packages : __win=0=0
                          __archspec=1=x86_64
       base environment : C:\Miniforge  (writable)
      conda av data dir : C:\Miniforge\etc\conda
  conda av metadata url : None
           channel URLs : https://conda.anaconda.org/conda-forge/win-64
                          https://conda.anaconda.org/conda-forge/noarch
          package cache : C:\Miniforge\pkgs
                          C:\Users\VssAdministrator\.conda\pkgs
                          C:\Users\VssAdministrator\AppData\Local\conda\conda\pkgs
       envs directories : C:\Miniforge\envs
                          C:\Users\VssAdministrator\.conda\envs
                          C:\Users\VssAdministrator\AppData\Local\conda\conda\envs
               platform : win-64
             user-agent : conda/4.12.0 requests/2.27.1 CPython/3.9.13 Windows/10 Windows/10.0.17763
          administrator : True
             netrc file : None
           offline mode : False

CMake configure step

-- The C compiler identification is MSVC 19.16.27048.0
-- The CXX compiler identification is MSVC 19.16.27048.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.16.27023/bin/HostX64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.16.27023/bin/HostX64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for pthread.h
-- Looking for pthread.h - not found
-- Found Threads: TRUE  
-- Found PythonInterp: C:/bld/outcome-cpp_1657102439357/_build_env/python.exe (found version "3.7.12") 
-- Using cached scan of project outcome headers ...
-- Using cached scan of project outcome tests ...
-- Performing Test CXX_HAS_CONCEPTS_BY_DEFAULT
-- Performing Test CXX_HAS_CONCEPTS_BY_DEFAULT - Failed
-- Performing Test CXX_HAS_COROUTINES_BY_DEFAULT
-- Performing Test CXX_HAS_COROUTINES_BY_DEFAULT - Failed
-- Performing Test CXX_HAS_COROUTINES_MSVC_STD20
-- Performing Test CXX_HAS_COROUTINES_MSVC_STD20 - Failed
-- Performing Test CXX_HAS_COROUTINES_MSVC_AWAIT
-- Performing Test CXX_HAS_COROUTINES_MSVC_AWAIT - Success
-- NOTE: This compiler claims to support C++ 20, enabling for unit test suite
-- Configuring done
-- Generating done
-- Build files have been written to: C:/bld/outcome-cpp_1657102439357/work/_build
ned14 commented 1 year ago

https://github.com/ned14/outcome/actions would suggest that Outcome builds fine on MSVC. I use it daily at work in C++ 23 mode. Conda might be the cause?

BurningEnlightenment commented 1 year ago

Since this hasn't seen any activity in a while, I'm going ahead and close this. Feel free to reopen if further qualifying information comes up (e.g. a reprex).