我很感興趣,引用標準中的具體段落,而不僅僅是一般意見。這是合法的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