从 MSVC14 切换到 MSVC16 导致 "compiler is out of heap space (C1060)" 错误
Switching from MSVC14 to MSVC16 leads to "compiler is out of heap space (C1060)" error
我正在尝试从 Visual Studio 14 2015
编译器切换到 Visual Studio 16 2019
来编译我的项目(也尝试了 Visual Studio 15 2017
,但导致了同样的问题)。我正在使用 irrequietus/typestring,它在旧编译器上工作得很好,但现在会导致错误。
这里有一个 class 应该与类型字符串一起使用:
// 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;
}
}
我就是这样使用 class:
// 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'>>;
或者类似的东西。
我正在尝试从 Visual Studio 14 2015
编译器切换到 Visual Studio 16 2019
来编译我的项目(也尝试了 Visual Studio 15 2017
,但导致了同样的问题)。我正在使用 irrequietus/typestring,它在旧编译器上工作得很好,但现在会导致错误。
这里有一个 class 应该与类型字符串一起使用:
// 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;
}
}
我就是这样使用 class:
// 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'>>;
或者类似的东西。