【发布时间】:2017-02-09 06:57:42
【问题描述】:
在cppreference 上提到可以有模板化 用户文字操作符,但有一些限制:
如果字面量操作符是一个模板,它必须有一个空的参数列表,并且只能有一个模板参数,它必须是元素类型为
char的非类型模板参数包,比如
template <char...> double operator "" _x();
所以我在下面的代码中写了一个:
template <char...>
double operator "" _x()
{
return .42;
}
int main()
{
10_x; // empty template list, how to specify non-empty template parameters?
}
问题:
- 代码可以工作,但是如何使用带有一些非空模板参数的运算符?
10_x<'a'>;或10_<'a'>x;无法编译。 - 您有此类模板化运算符在实际使用中的任何示例吗?
【问题讨论】:
-
我以前从未见过,但看起来想法是在编译时将前缀之前的字符视为
chars,而不是将其视为数字文字并传递它到一个运行时函数。 -
@KyleStrand 但我仍然不确定你如何使用它(即编译时没有错误)。
-
显然我也不是,因为我以前从未见过它!但我确实有一个我刚刚写的工作示例,所以我会发布它。
-
@KyleStrand Ohh 我的意思是编译成功(不是为什么要使用它)。
标签: c++ templates c++11 c++14 user-defined-literals