考虑以下代码:
struct Undefined;
template <typename T>
void TemplateFunction()
{
Undefined obj;
}
int main()
{
return 0;
}
我一直认为模板函数和模板方法(或模板类的方法部分)只会检查语法(除非它们被实例化),在这种情况下上面的代码应该编译。
问题是,它不能用 Xcode(版本:4.3.2,使用 LLVM 编译器)编译,现在我想知道上面的代码是否是非标准的,即它不应该在符合 C++03 标准的编译器上编译? Xcode的错误是:
变量的类型不完整“未定义”
请注意,在原始代码中,未定义对象是静态断言的一部分。