我最近花了一些时间在我的 C++ 模板中寻找一个错字。g++ 没有抱怨错字,所以我想知道将来是否有可以检查此类问题的工具?
这是一个演示正确编译的简化示例。我希望有人抱怨没有定义 struct dummy,但似乎模板化的类 goo 隐藏了这一点。
富.h:
struct smart {
int x, y, z;
};
template<typename T> class goo
{
void barf(T* ptr){}
};
template<typename T> class foo
{
public:
foo(){};
private:
goo<T> x;
};
class bar: public foo<struct dummy>
{
public:
void do_something(struct smart& thing){}
};
foo.cpp:
#include "foo.h"
int main()
{
bar a;
struct smart b;
a.do_something(b);
return b.x+b.y+b.z;
}
使用 g++ foo.cpp 成功编译