While not explicitly stated as being a supported compiler, the Microsoft Visual C++ compiler should fall under "standard conformant C++17 compiler".
Finally, when I tried to compile the fizzbuzz example, I got the following error: Context does not allow for disambiguation of overloaded function
Microsoft (R) Build Engine version 16.7.0+b89cb5fde for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
main.cpp
C:\dev\c++\my_proj\third_party\patterns\include\mpark\patterns/match.hpp(736,30): message : Context does not allow for disambiguation of overloaded function [C:\dev\c++\my_proj\build\prog.vcxproj]
C:\dev\c++\my_proj\third_party\patterns\include\mpark\patterns/match.hpp(987): message : see reference to function template instantiation 'auto mpark::patterns::try_match<int,int,std::tuple<_Ty &&,_Ty &&>,mpark::patter
ns::detail::Match<R,int,int>::()::<lambda_1>::()::<lambda_1>>(const mpark::patterns::Ds<int,int> &,Values &&,F &&)' being compiled [C:\dev\c++\my_proj\build\prog.vcxproj]
with
[
_Ty=int,
R=mpark::patterns::detail::Deduce,
Values=std::tuple<int &&,int &&>,
F=mpark::patterns::detail::Match<mpark::patterns::detail::Deduce,int,int>::()::<lambda_1>::()::<lambda_1>
]
C:\dev\c++\my_proj\src\main.cpp(46): message : see reference to function template instantiation 'decltype(auto) mpark::patterns::detail::Match<R,int,int>::operator ()<mpark::patterns::detail::Pattern<false,int,int>,Rhs
&&,mpark::patterns::detail::Case<mpark::patterns::detail::Pattern<false,int,mpark::patterns::Identifier<18446744073709551615,void>>,fizzbuzz::<lambda_2> &&>,mpark::patterns::detail::Case<mpark::patterns::detail::Pattern<false,mpark::patt
erns::Identifier<18446744073709551615,void>,int>,fizzbuzz::<lambda_3> &&>,mpark::patterns::detail::Case<mpark::patterns::detail::Pattern<false,mpark::patterns::Identifier<18446744073709551615,void>,mpark::patterns::Identifier<18446744073
709551615,void>>,fizzbuzz::<lambda_4> &&>>(mpark::patterns::detail::Case<mpark::patterns::detail::Pattern<false,int,int>,Rhs &&> &&,mpark::patterns::detail::Case<mpark::patterns::detail::Pattern<false,int,mpark::patterns::Identifier<1844
6744073709551615,void>>,fizzbuzz::<lambda_2> &&> &&,mpark::patterns::detail::Case<mpark::patterns::detail::Pattern<false,mpark::patterns::Identifier<18446744073709551615,void>,int>,fizzbuzz::<lambda_3> &&> &&,mpark::patterns::detail::Cas
e<mpark::patterns::detail::Pattern<false,mpark::patterns::Identifier<18446744073709551615,void>,mpark::patterns::Identifier<18446744073709551615,void>>,fizzbuzz::<lambda_4> &&> &&) &&' being compiled [C:\dev\c++\game_dev\opengl_platforme
r\build\prog.vcxproj]
with
[
R=mpark::patterns::detail::Deduce,
Rhs=fizzbuzz::<lambda_1>
]
Again, while MSVC isn't explicitly supported, I think it could be worthwhile to state that in practice only GCC and Clang are supported and tested.
While not explicitly stated as being a supported compiler, the Microsoft Visual C++ compiler should fall under "standard conformant C++17 compiler".
Trying to compile gives an error on C++17 checking:
https://godbolt.org/z/frsGsb
Additionally, if this is circumvented by commenting out the check in
config.hpp, some explicit GCC pragmas inas_tuple.hppare unrecognized by MSVC and needed to be commented out as well.Finally, when I tried to compile the fizzbuzz example, I got the following error:
Context does not allow for disambiguation of overloaded functionAgain, while MSVC isn't explicitly supported, I think it could be worthwhile to state that in practice only GCC and Clang are supported and tested.
Cool project never the less!