У меня новый SSD, поэтому я переустановил свою ОС вместе с Visual Studio.Теперь я получаю довольно странную ошибку с Visual C ++ 15.9 (и Visual Studio 2017?).
Если я попытаюсь включить симпатичную печать в main.cpp, появятся следующие строки:
>------ Build started: Project: Test, Configuration: Debug Win32 ------
1>Test.cpp
1>c:\users\nguyen thanh\source\repos\test\test\pretty_print.h(64): fatal error C1001: An internal error has occurred in the compiler.
1>(compiler file 'd:\agent\_work\2\s\src\vctools\compiler\cxxfe\sl\p1\c\types.c', line 4563)
1> To work around this problem, try simplifying or changing the program near the locations listed above.
1>Please choose the Technical Support command on the Visual C++
1> Help menu, or open the Technical Support help file for more information
1>c:\users\nguyen thanh\source\repos\test\test\pretty_print.h(71): note: see reference to class template instantiation 'pretty_print::detail::has_begin_end<T>' being compiled
1>Done building project "Test.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Вот строки, которые имеют проблему
template <typename T>
struct has_begin_end : private sfinae_base
{
private:
template <typename C>
static yes & f(typename std::enable_if<
std::is_same<decltype(static_cast<typename C::const_iterator(C::*)() const>(&C::begin)),
typename C::const_iterator(C::*)() const>::value>::type *);
template <typename C> static no & f(...);
template <typename C>
static yes & g(typename std::enable_if<
std::is_same<decltype(static_cast<typename C::const_iterator(C::*)() const>(&C::end)),
typename C::const_iterator(C::*)() const>::value, void>::type*);
template <typename C> static no & g(...);
}
Вы можете увидеть полный источник pretty_print.h здесь: https://github.com/louisdx/cxx-prettyprint
У кого-нибудь есть подсказка, что мне делать?Я попытался поработать с флагами препроцессора и флагами оптимизации, но они не кажутся проблемой.
Редактировать: все возвращается на круги своя, если я удаляю последнюю версию и использую Visual C ++ 15.7 вместе с версией Visual Studio 1715.7.6.Давайте подождем, пока Microsoft все исправит.