本地类模板

The*_* do 13 c++ templates c++11

我们可以在函数内部定义一个本地类,但是这个类不能是一个有点烦人且不一致的模板.在C++ 0x标准中是否有任何更新?

sel*_*tze 9

是.实际上,这个规则更改是使Lambda表达式成为可能的原因,因为Lambda表达式创建了一个本地未命名类型.

对不起,我误解了你的问题.我以为你在谈论使用本地类作为模板参数.这在C++ 98和C++ 03中是不允许的,但它可以在C++ 0x中工作.

至于你的实际问题,C++ 0x不会改变任何这个.

老实说,我没有理由允许"功能本地类模板".对"功能本地类模板"的支持是一个可能只有少数人关心的功能.在函数之外编写类模板是可以接受的替代方法.这显然不会给编译器供应商带来足够的压力,无论实现这样的功能有多复杂.编译器供应商可能更关心实现其他C++ 0x功能.

但我理解你的观点.这似乎是一种不必要的语言不规范.如果你非常关心这个功能,你可以写一个正式的提案,并在大约两年内将它发送给C++标准化委员会,届时他们可能会接受"C++ 1y"的提案.

  • 相反,我没有理由不允许本地模板类.我不知道为什么在标准C++中禁用它 (15认同)
  • @MSalters:如果C++是从头开始设计的?没有一个星期我不希望它:) (4认同)
  • @Mattieu,如果我有一个选择,我总是选择功能更强大的工具,这让我能够以极快的速度完成工具,这个工具让我只能做一个平庸的工作.这就是为什么我学习C++而不是Java或MJ的原因,即使在后两种语言中它很容易(你可以更快地做事)但是它们在很多方面都受到限制,以至于它的缺陷是不值得的. (2认同)
  • 有理由至少允许具有方法模板的函数本地类。这就是泛型 lambda 的含义(实际上,它们正是此功能的语法糖)。 (2认同)