【发布时间】:2019-11-08 10:08:07
【问题描述】:
我正在尝试从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的模板参数
存储库包含类似的问题,但维护者似乎没有回复。我试图找到替代的类型字符串实现,但找不到。谁能帮我解决这个问题,好吗?
【问题讨论】:
-
对于初学者来说,静态成员函数可能没有限定符 const。
-
啊我明白了...您想使用字符串作为模板参数。您/确定/那是您问题的最佳解决方案吗?我的意思是,有数以百万计的 C++ 程序员,而且这不是库的一部分或者有一个很好的最新的第三方库的事实必须表明一些东西......也许解释/为什么/你需要它。
标签: c++ templates metaprogramming