【发布时间】:2013-02-05 00:55:49
【问题描述】:
我什至不确定是否允许使用负用户定义文字。如果没有,为什么他们被排除在外?
例如,我想使用:
auto money_i_owe_jack = -52_jpy;
这是我使用 gcc 4.7.2 尝试过的:
constexpr int64_t operator "" _jpy(long long l)
{
return static_cast<int64_t>(l);
}
错误
Test_udl.cpp:60:47: error: ‘constexpr int64_t operator"" _jpy(long long int)’ has invalid argument list
【问题讨论】:
-
你试过了吗?我认为他们是允许的
-
@balki - 是的,我遇到编译错误 - 稍后会更新 OP... ...实际上,由于
long double,一个负数也可以,但我不能无法接受long long- 让我再试一次。 -
你用的是什么编译器? It's not very widely supported yet.
-
负号不是文字的一部分。它是一个操作符,作用于文字的返回值。因此,您的 UDL 函数返回的类型需要定义一元
operator-。 -
@BenjaminLindley ty - 如果你能告诉我如何解决这个问题作为答案/例子,我可以接受
标签: c++ c++11 user-defined-literals