可变参数字符列表的模板参数推导

Template argument deduction for variadic char lists

本文关键字:参数 列表 变参 字符      更新时间:2023-10-16

我有一个结构体

template<char...> struct foo {};

和可变参数函数

template<char... chars> auto make_foo(char...) {
    return foo<chars...>();
}

但是,我无法找到正确的语法来自动推断字符。正如所写,叮当给我

decltype(make_foo('a','b','c')) == foo<>

相反,我希望拥有

decltype(make_foo('a','b','c')) == foo<'a','b','c'>

根结底,你不能有这样的make_foo函数,因为它的参数都是运行时值,不能转换为编译时值

但是,您可以简单地使用宏。

#define make_foo(...) foo<__VA_ARGS__>{}