我最近花了一些時間在我的C++模板中搜索錯字。 g ++沒有抱怨輸入錯誤,所以我想知道是否有一種工具可以在將來檢查這種類型的問題?檢測C++模板問題的工具
這裏是這表明了正確編譯的簡化示例。我會期待一個關於struct dummy的投訴沒有被定義,但是它似乎就像模板化的類goo隱藏了它。
foo.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中
我使用了-Wall,-Wextra和-pedantic,編譯器仍然沒有發現錯誤。有關使用其他/選項[選項](http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html)的任何建議嗎? – Coop
該代碼可能是合法的,如書面。如果是這樣,沒有工具會爲你找到問題,因爲沒有問題 - 這是我的觀點。不要使用'' - 使用''代替。 –
感謝您的澄清和小費。 – Coop