在 C++ 中,是否有某种等效的可变参数模板,使用 values 而不是类型名或类?
在模板类的方法内,其想法是使用实例声明中指定的值,而不通过构造函数。
可能是这样的(尚未找到正确的语法):
template <class T, "some variadic value syntax...">
class Sample
{
public:
T val() { return T("some variadic value syntax..."); }
};
Sample <std::string> a; // a.val() returns ""
Sample <std::string, "foo"> b; // b.val() returns "foo"
Sample <std::string, 4, 'a'> c; // c.val() returns "aaaa"
目前,相当于通过预处理宏来完成,我想消除这些宏并用模板替换。
欢迎任何其他想法,只要:
您可以使用占位符类型
auto
,如下所示。请注意,当前 C++ 中不允许字符串文字作为模板参数。
template <class T, auto...>
class Sample
{
public:
T val() { return T("some variadic value syntax..."); }
};