您认为哪种更好?模板标识符vs模板函数参数类型中的decltype
template <typename T> void func(T x,T y) {}
或
template <typename T> void func(T x,decltype(x) y) {}
IMHO,第二形式似乎优选的,因为在类型x和y之间的联系是明确的,并且至少当重命名模板标识符的东西,看起来容易出错较少。
编辑
第二种形式让你打电话与一个使用第一个参数的子类型的功能,而第一种形式需要完全相同的类型。这个论点似乎比前一个稍好。
第二种形式也似乎不必要的混淆。 – DeiDei
我没有真正得到'decltype'替代方案的用例。谨慎地阐述你为什么要这样的事情? –
第二种形式不会为'y'启用隐式转换,而第一种形式不会? – Quentin