VS10 C ++错误C2833:“运算符字符串”不是公认的运算符或类型

时间:2019-02-26 13:44:12

标签: c++ c++11 visual-studio-2010 visual-c++ operator-overloading

我正在尝试为operator ""_exp类创建一个自定义运算符Exponent,我可以这样称呼该运算符:

std::cout << 10.5 * 2._exp << '\n';

我其余的代码:

struct Exponent
{
    long double value;
};

Exponent operator ""_exp(long double exponent)
{
    return exponent;
}

我正在使用 Visual Studio 10 编译器,并且出现 C2883 错误:

Error C2833: 'operator string' is not a recognized operator or type

我已经尝试过:

我找到了可能的用户定义运算符的列表,但找不到operator ""https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/ds533389(v%3dvs.100)

问题: 有人可以告诉我在 Visual Studio 2010 中可以使用operator ""_exp"吗?也许还有另一种方法可以实现这一目标?

1 个答案:

答案 0 :(得分:2)

Microsoft Visual Studio 10不是C ++ 11编译器。

他们的第一个完全支持C ++ 11(包括您尝试使用的用户定义的文字)的编译器是MSVC2017。

最后,请注意if(!admin.isModified('password')) { return next(); } AdminSchema.pre('save', function(next) { const admin = this // bind this if (admin.$isDefault('password') || admin.isModified('password')) { bcrypt.genSalt(12, (err, salt) => { // generate salt and harsh password if (err) { return next(err); } bcrypt.hash(admin.password, salt, (err, hash) => { if (err) { return next(err); } admin.password = hash return next() }) }) } else { return next(); } }) 不是10.5