Ale*_*k86 1 c++ templates type-deduction c++17
对于支持此功能的编译器,您可以编写
std::tuple t1(1);
Run Code Online (Sandbox Code Playgroud)
但在我看来,这个程序的可读性受到了伤害.
例如,如果你有自己的类与std :: tuple类似,那么读者看不到这个模板类的不同实例可能是不同类型的
Myple t1(1);
Myple t2(1, 2);
Myple t3(1, 3);
...
t1 == t2; // compiler error, t1 and t2 are actually of different types
t2 == t3; // no error
Run Code Online (Sandbox Code Playgroud)
有没有提出如何消除这种"可读性"问题的建议?
我的建议是让程序员写这样的东西
Myple<auto...> t1(1);
Run Code Online (Sandbox Code Playgroud)
(甚至是Myple <...> t1(1);)
所以程序读者至少应该知道,因为他们知道2种不同的汽车可以是不同类型的.
但我相信可以有更智能的解决方案.
编辑
将"用户体验"更改为"可读性".
有没有提出如何消除这种"用户体验"问题的建议?
在撰写本文时,没有任何书面建议改变这一点.C++ 17完成,完成并出门.因此,删除此功能的任何此类提议都将与C++ 17不兼容.
因此,这些提议需要证明自己不仅仅是称其为"'用户体验'问题".
从类模板推导提议的最早修订中可以清楚地看出,目标是创建您认为不好的UX,以允许类似于函数模板参数"完全"推导出类模板参数.即使解决了提案的"挑战",似乎也没有任何建议要求模板名称之外的显式语法来调用类模板参数推断.
简而言之,该提案的目标是允许构造函数"推导出他们的模板参数",就像我们期望的其他函数和方法一样,'".
因此,不仅没有建议消除这种"用户体验"问题; 这就是"这个'用户体验'问题" 是这个想法的重点.
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |