gpt4 book ai didi

c++ - 从 MSVC14 切换到 MSVC16 导致 "compiler is out of heap space (C1060)"错误

转载 作者:行者123 更新时间:2023-11-30 04:42:22 25 4
gpt4 key购买 nike

我正在尝试从 Visual Studio 14 2015 切换编译器为 Visual Studio 16 2019编译我的项目(也试过 Visual Studio 15 2017 ,但导致了同样的问题)。我正在使用 irrequietus/typestring ,它在旧编译器上工作得很好,但现在会导致错误。

这是一个应该与类型字符串一起使用的类:

// my_custom_class.h
template<typename T>
class MyCustomClass
{
public:
static bool compareTheTypestring(const std::string& other) const {
return std::strcmp(data(), other.c_str()) == 0;
}
}

我是这样使用这个类的:

// use_it.cpp
#include "typestring.hh"
#include "my_custom_class.h"
typedef MyCustomClass<typestring_is("Foo")> FooCompare;

typestring.hh 中吐出以下错误:

  • compiler is out of heap space (C1060) .

use_it.cpp 中还有更多错误:

  • irqus::typeek: no matching overloaded function found (C2672)
  • Failed to specialize function template 'unknown-type irqus::typeek(irqus::typestring<C...>)'
  • 无法推导出 MyCustomClass 的模板参数

存储库包含类似的问题,但维护者似乎没有回复。我试图找到替代的类型字符串实现,但找不到。谁能帮我解决这个问题?

最佳答案

issue has already been reported in january , 此后有 0 个回复。似乎图书馆不再更新......也许寻找替代解决方案

您真的应该在问题中添加您要尝试做的事情的详细信息。在我理解你想要实现的目标之前必须通读外部库。我最好的建议是:寻找替代方案。编译时字符串还有其他方法。模板参数可能不是最佳答案。

如果您真的想使用模板参数字符串,您必须自己修复它。该库可能依赖于未定义的行为。所以现在坏了。我正在尝试,但这不是很直接。您可能需要使用 charizing operator在宏中拆分字符串,然后将字符放入元组类型...

template<char c>
class CharType {
public:
static constexpr char Char = c;
};

using FooString = std::tuple<CharType<'F'>, CharType<'o'>, CharType<'o'>>;

或者类似的东西。

关于c++ - 从 MSVC14 切换到 MSVC16 导致 "compiler is out of heap space (C1060)"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58764439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com