是的,根据Rakete1111指出的项目符号是允许的。不必只是假设它可以完成,而是根据[dcl.type.auto.deduct] / 4(强调我的)上占位符类型推导的规则完成的:
如果占位符是自动类型说明符,则使用模板参数推导规则确定推导的类型T'替换T。通过使用新的发明类型模板参数U替换auto的出现或从t中获取P,如果初始化为copy-list-initialization,则替换为std :: initializer_list。使用从函数调用中导出模板参数的规则来推导U的值,其中P是函数模板参数类型,而对应的参数是e。如果推导失败,则声明格式错误。否则,通过将推导的U代入P来获得T'。
其中[temp.deduct.call] / 6具有与您的用例有关的段落:
当P是函数类型,函数指针类型或成员函数类型的指针时:
如果参数是包含一个或多个函数模板的重载集,则该参数将被视为非推导上下文。
如果参数是重载集合(不包含函数模板),则尝试使用该集合的每个成员来推导试验参数。如果仅对重载集合成员之一进行推论成功,则将该成员用作推论的参数值。如果推论对于过载集的不止一个成员成功,则将参数视为非推论上下文。
因此,它拥有所有的荣耀。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句