LockLib update

Обновился LockLib на GitHub: https://github.com/coolsoftware/LockLib.

1. Классы VLock, VRWLock, VLockPtr, VReadLockPtr, VWriteLockPtr теперь “uncopyable”, то есть их нельзя скопировать (см. Листинг 1: Ошибка 1 и Ошибка 2). Запрет на копирование осуществляется путем наследования этих классов от VUncopyable. При компиляции кода, содержащего запрещенное копирование, будет выдано сообщение ошибке:

VLock.h(62): error C2248: ‘VUncopyable::VUncopyable’ : cannot access private member declared in class ‘VUncopyable’

2. Конструктор класса VRWLock объявлен с ключевым словом explicit для того, чтобы исключить неявное создание экземпляра этого класса при вызове функции (см. Листинг 1: Ошибка 3). При компиляции кода, содержащего такое неявное создание VRWLock, будет выдано сообщение об ошибке:

TestLock.cpp(184): error C2664: ‘RWFunc’ : cannot convert parameter 1 from ‘int’ to ‘const VRWLock &’
          Reason: cannot convert from ‘int’ to ‘const VRWLock’
          Constructor for class ‘VRWLock’ is declared ‘explicit’

Листинг. 1.

void RWFunc(const VRWLock&)
{
//do something here
//...
}

VLock lock1;
VLock lock2 = lock1; //Ошибка 1
VRWLock rwlock1;
VRWLock rwlock2 = rwlock1; //Ошибка 2
RWFunc(1); //Ошибка 3

===
Перепечатка материалов блога разрешается с обязательной ссылкой на blog.coolsoftware.ru