Description
Hi All,
We've stumbled across some build failures in Mesos after implementing support for char8_t under /std:c + + latest in the development version of Visual C + +. Could you help look at this? Thanks in advance! Noted that this issue only found when compiles with unreleased vctoolset, that next release of MSVC will have this behavior.
Repro steps:
git clone -c core.autocrlf=true https://github.com/apache/mesos D:\mesos\src
open a VS 2017 x64 command prompt as admin and browse to D:\mesos
set CL=/std:c++latest
cd src
.\bootstrap.bat
cd ..
mkdir build_x64 && pushd build_x64
cmake ..\src -G "Visual Studio 15 2017 Win64" -DCMAKE_SYSTEM_VERSION=10.0.17134.0 -DENABLE_LIBEVENT=1 -DHAS_AUTHENTICATION=0 -DPATCHEXE_PATH="C:\gnuwin32\bin" -T host=x64
Failures:
base64_tests.i
D:\Mesos\src\3rdparty\stout\tests\base64_tests.cpp(63): error C2664: 'std::string base64::encode_url_safe(const std::string &,bool)': cannot convert argument 1 from 'const char8_t [12]' to 'const std::string &'
D:\Mesos\src\3rdparty\stout\tests\base64_tests.cpp(63): note: Reason: cannot convert from 'const char8_t [12]' to 'const std::string'
D:\Mesos\src\3rdparty\stout\tests\base64_tests.cpp(63): note: No constructor could take the source type, or constructor overload resolution was ambiguous
D:\Mesos\src\3rdparty\stout\tests\base64_tests.cpp(63): error C2660: 'testing::internal::EqHelper<false>::Compare': function does not take 3 arguments
D:\Mesos\build_x64\3rdparty\googletest-1.8.0\src\googletest-1.8.0\googletest\include\gtest/gtest.h(1430): note: see declaration of 'testing::internal::EqHelper<false>::Compare'
D:\Mesos\src\3rdparty\stout\tests\base64_tests.cpp(63): error C2512: 'testing::AssertionResult': no appropriate default constructor available
D:\Mesos\build_x64\3rdparty\googletest-1.8.0\src\googletest-1.8.0\googletest\include\gtest/gtest.h(256): note: see declaration of 'testing::AssertionResult'
D:\Mesos\src\3rdparty\stout\tests\base64_tests.cpp(67): error C2664: 'std::string base64::encode_url_safe(const std::string &,bool)': cannot convert argument 1 from 'const char8_t [12]' to 'const std::string &'
D:\Mesos\src\3rdparty\stout\tests\base64_tests.cpp(67): note: Reason: cannot convert from 'const char8_t [12]' to 'const std::string'
D:\Mesos\src\3rdparty\stout\tests\base64_tests.cpp(67): note: No constructor could take the source type, or constructor overload resolution was ambiguous
D:\Mesos\src\3rdparty\stout\tests\base64_tests.cpp(67): error C2660: 'testing::internal::EqHelper<false>::Compare': function does not take 3 arguments
D:\Mesos\build_x64\3rdparty\googletest-1.8.0\src\googletest-1.8.0\googletest\include\gtest/gtest.h(1430): note: see declaration of 'testing::internal::EqHelper<false>::Compare'
D:\Mesos\src\3rdparty\stout\tests\base64_tests.cpp(67): error C2512: 'testing::AssertionResult': no appropriate default constructor available
D:\Mesos\build_x64\3rdparty\googletest-1.8.0\src\googletest-1.8.0\googletest\include\gtest/gtest.h(256): note: see declaration of 'testing::AssertionResult'
D:\Mesos\src\3rdparty\stout\tests\base64_tests.cpp(83): error C2664: 'Try<std::string,Error> base64::decode_url_safe(const std::string &)': cannot convert argument 1 from 'const char8_t [16]' to 'const std::string &'
D:\Mesos\src\3rdparty\stout\tests\base64_tests.cpp(83): note: Reason: cannot convert from 'const char8_t [16]' to 'const std::string'
D:\Mesos\src\3rdparty\stout\tests\base64_tests.cpp(83): note: No constructor could take the source type, or constructor overload resolution was ambiguous
D:\Mesos\src\3rdparty\stout\tests\base64_tests.cpp(83): error C2672: 'AssertSomeEq': no matching overloaded function found
D:\Mesos\src\3rdparty\stout\tests\base64_tests.cpp(83): error C2780: 'testing::AssertionResult AssertSomeEq(const char *,const char *,const T1 &,const T2 &)': expects 4 arguments - 3 provided
D:\Mesos\src\3rdparty\stout\include\stout/gtest.hpp(79): note: see declaration of 'AssertSomeEq'
D:\Mesos\src\3rdparty\stout\tests\base64_tests.cpp(83): error C2512: 'testing::AssertionResult': no appropriate default constructor available
D:\Mesos\build_x64\3rdparty\googletest-1.8.0\src\googletest-1.8.0\googletest\include\gtest/gtest.h(256): note: see declaration of 'testing::AssertionResult'
D:\Mesos\src\3rdparty\stout\tests\base64_tests.cpp(87): error C2664: 'Try<std::string,Error> base64::decode_url_safe(const std::string &)': cannot convert argument 1 from 'const char8_t [17]' to 'const std::string &'
D:\Mesos\src\3rdparty\stout\tests\base64_tests.cpp(87): note: Reason: cannot convert from 'const char8_t [17]' to 'const std::string'
D:\Mesos\src\3rdparty\stout\tests\base64_tests.cpp(87): note: No constructor could take the source type, or constructor overload resolution was ambiguous
D:\Mesos\src\3rdparty\stout\tests\base64_tests.cpp(87): error C2672: 'AssertSomeEq': no matching overloaded function found
D:\Mesos\src\3rdparty\stout\tests\base64_tests.cpp(87): error C2780: 'testing::AssertionResult AssertSomeEq(const char *,const char *,const T1 &,const T2 &)': expects 4 arguments - 3 provided
D:\Mesos\src\3rdparty\stout\include\stout/gtest.hpp(79): note: see declaration of 'AssertSomeEq'
D:\Mesos\src\3rdparty\stout\tests\base64_tests.cpp(87): error C2512: 'testing::AssertionResult': no appropriate default constructor available
D:\Mesos\build_x64\3rdparty\googletest-1.8.0\src\googletest-1.8.0\googletest\include\gtest/gtest.h(256): note: see declaration of 'testing::AssertionResult'