Sam*_*mal 19 c++ user-defined-literals c++11
以下用户定义的文字省略了错误:
constexpr double operator "" _kg(double q)
{
return q*1000;
}
Run Code Online (Sandbox Code Playgroud)
但如果long
添加,错误将消失,代码将按如下方式工作:
constexpr double operator "" _kg(long double q)
{
return q*1000;
}
Run Code Online (Sandbox Code Playgroud)
错误是:
‘constexpr double operator""_kg(double)’ has invalid argument list
Run Code Online (Sandbox Code Playgroud)
这个问题只能由参数和返回类型可以是引起double
不long
.
为什么long
需要?
Mat*_*Mat 22
C++ 11 draft n3290对于用户定义的文字可以采用的参数(第13.5.8节)有这个说法:
文字运算符的声明应具有等效于以下之一的参数声明子句:
Run Code Online (Sandbox Code Playgroud)const char* unsigned long long int long double char wchar_t char16_t char32_t const char*, std::size_t const wchar_t*, std::size_t const char16_t*, std::size_t const char32_t*, std::size_t
如您所见,double
不在该列表中,只是long double
.因此,您必须将此用于用户定义的文字,这些文字期望将浮点数作为参数.
归档时间: |
|
查看次数: |
1989 次 |
最近记录: |