代码template<auto = {}>中单个模板参数的类型与默认值是什么?
分析
template<auto = {}>中模板参数的类型及默认值 待分析代码
template<auto = {}> int getInt();
Clang AST Dump输出
| |-NonTypeTemplateParmDecl 0xcb77130 <line:1:10, col:18> col:15 'auto' depth 0 index 0 | | `-TemplateArgument expr | | `-InitListExpr 0xcb77050 <col:17, col:18> 'void'
解析结果
- 模板参数类型:这是一个非类型模板参数,声明时用
auto作为类型占位符,具体类型由默认值推导得出,最终推导类型为std::initializer_list<void>。 - 默认值:默认值是空初始化列表
{},对应AST中的InitListExpr节点,该表达式类型标记为void,代表空初始化列表实例。
内容的提问来源于stack exchange,提问作者ByteEater
相关产品推荐
相关产品推荐

