C++11中本地类的使用有什么变化吗?
在 C++03 中,本地类似乎不能用作模板参数(我记得)。
考虑这段代码,
template<typename T> void f(const T&) {}
//Note : S is a local class defined inside main()
int main() { struct S{}; f(S()); } //I want template argument to be deduced.
但它给出了编译错误(C++03模式),说(ideone):
prog.cpp:4: 错误:没有匹配函数调用 'f(main()::S)'</p>
但是,在 C++11 模式( ideone )下编译时它编译得很好,这对我来说很有意义,否则 lambda 将无法工作。所以我猜想本地类的使用至少有这种变化。我对吗?本地课程还有哪些其他变化?
请引用标准中的相关文本(C++03 和 C++11 两者),以便读者自己比较,以备将来参考。