Jak*_*dle 0 c++ templates typename type-traits c++11
这是一个奇怪的问题,虽然很明显:
为什么在所有模板<type_traits>都被一个名为typenname和::type前缀/后缀?
当然,一个原因是没有像C++ 0x这样的模板化typedef using,它允许以下内容:
template<typename T>
using remove_ref = typename std::remove_reference<T>::type;
remove_ref<int&> foo = 4;
Run Code Online (Sandbox Code Playgroud)
所以这个问题不太重要,为什么它目前是这样的,而是更多关于这种行为是否会在未来的C++标准中被简化?.
类似的改进可能会带来如下特征std::is_pointer<T>::value- 我已经可以在C++ 14/17的视野中看到模板化的常量,它们可以使用类似的东西std::is_pointer<T>.
注意:据我所知,这种简化不是任何有关即将推出的C++标准的已发布项目的主题.在这种情况下,这个问题没有真正的是/否答案,并且这个线程可以充当pro/con列表,是否可能在任何新版本的C++中更改.
编辑:
感谢@Drew_Dormann和@erenon正确地指出已经有_t所有类型特征模板添加的版本正是这样做的.
然而,它仍然是开放的,std::is_pointer除了std::is_pointer<T>()-Version 之外,是否有任何迹象表明价值特征会成为类似简化的一部分?
| 归档时间: |
|
| 查看次数: |
247 次 |
| 最近记录: |