Почему я не могу сделать оператор ++ () nothrow?
Это может быть одним из немногих преимуществ использования оператора postfix ++ (перед оператором prefix ++).
Например, этот код не компилируется
class Number
{
public:
Number& operator++ () // ++ prefix
{
++m_c;
return *this;
}
Number operator++ (int) nothrow // postfix ++
{
Number result(*this); // make a copy for result
++(*this); // Now use the prefix version to do the work
return result; // return the copy (the old) value.
}
int m_c;
};
Заметьте, что постфиксный оператор также можно сделать потокобезопасным.
nothrow
константа, используемая для передачи оператору new для указания того, что new не должен выдавать исключение при ошибке.
Я думаю, что вы хотите noexcept.
Других решений пока нет …