struct A
{
// clang 3.8 error : cannot combine with previous 'static' declaration specifier
static mutable int n;
};
Я думаю, что static mutable int n;
имеет четкую семантику в некоторых случаях. Почему это запрещено в C++?Почему «static mutable int n;» не разрешено в C++?
Обновление:
Другой пример, чтобы показать clear semantics
:
class SharedValue
{
public:
void Set(int n)
{
std::lock_guard lock(_mtx);
_n = n;
}
int Get() const
{
std::lock_guard lock(_mtx);
//
// _mtx should be mutable,
// because this is in const member function
//
return _n;
}
private:
static mutable std::mutex _mtx;
int _n;
};
_ «В некоторых случаях есть четкая семантика». Не могли бы вы рассказать об этом? Я не понимаю, что вы имеете в виду. 'static' не имеет ничего общего с' const' или 'mutable'. –