我尝试直接在用户定义的文字结果上调用方法,但我的结果因编译器而异。
#include <string>
std::string operator ""_test(unsigned long long value)
{
return std::to_string(value);
}
int main()
{
1000_test.size(); // 1) NOK on Clang/GCC, OK on MSVC
(1000_test).size(); // 2) OK everywhere
1000_test + "a"; // 3) OK everywhere
}
案例1)
似乎很奇怪,因为编译器似乎不允许定义_test.size
用户定义的文字。
那么1)
情况下哪个编译器正确?标准说什么?