g ++ -fsyntax-only单元测试

时间:2010-04-14 04:53:47

标签: g++

我想知道是否

g++ -fsyntax-only

仅进行语法检查或是否也扩展模板。

因此,我要求堆栈溢出寻求帮助:

有没有办法编写一个程序,从语法上说它是有效的,但是当模板扩展完成时,会发生错误?

谢谢!

1 个答案:

答案 0 :(得分:11)

  

有没有办法编写一个程序,从语法上说它是有效的,但是当模板扩展完成时,会发生错误?

取决于您对语法上有效的的定义是否为g++的{​​{1}}。

以下简单的测试程序说明了这一点,我相信,它会回答您的问题:

-fsyntax-only

尝试建立:

// test.cpp
template< bool > struct test;
template< > struct test< true > { };

int main(void) {
  test< false > t;
  return 0;
}

是的, $ g++ /tmp/sa.cpp test.cpp: In function `int main()': test.cpp:6: error: aggregate `test< false> t' has incomplete type and cannot be defined $ g++ -fsyntax-only /tmp/sa.cpp test.cpp: In function `int main()': test.cpp:6: error: aggregate `test< false> t' has incomplete type and cannot be defined 执行模板扩展