我很感兴趣,引用标准中的具体段落,而不仅仅是一般意见。这是合法的C++代码吗?
template <class T> struct wrapped
{
wrapped(const T&) {}
};
template <class T> wrapped<T> wrappit(const T& x)
{
return wrapped<T>(x);
}
template <class T> int run_function(const T& x, bool wrapped)
{
if (wrapped) {
return 0;
} else {
return run_function(wrappit(x), true) + 1;
}
}
int main()
{
const int result = run_function(0.5, false);
return result;
}
这应该做什么?它所做的一切就是让'main'以迂回的方式返回1。 – 2012-02-28 22:50:59
是什么让你认为这是非法的C++?尽管不定式实例化深度最有可能杀死一个愚蠢的编译器?我的意思是,“int main(){}”是一个合法的C++代码吗?请给我一个关于它的标准。 – 2012-02-28 22:53:19
这是一个关于“合法”一词定义的问题吗?我猜编译器会递归地将T封装在'wrapped
Qwertie
2012-02-28 22:53:37