Что означают эти две странные строки кода?
thread_guard(thread_guard const&) = delete; thread_guard& operator=(thread_guard const&) = delete;
=delete - это новая функция C ++ 0x.Это означает, что компилятор должен немедленно прекратить компиляцию и выдать жалобу «эта функция удалена», как только пользователь использует такую функцию (см. Также: функции по умолчанию и удаленные функции - управление значениями по умолчанию C++ 0x FAQ (Бьярн Страуструп).
=delete
thread_guard(thread_guard const&) - это конструктор копирования, а thread_guard& operator=(thread_guard const&) - конструктор присваивания.Поэтому эти две строки вместе отключают копирование thread_guard экземпляров.
thread_guard(thread_guard const&)
thread_guard& operator=(thread_guard const&)
thread_guard
Это новый синтаксис C ++ 0x для отключения определенных функций класса.См. wikipedia для примера.Здесь вы говорите, что класс thread_guard не является ни копируемым, ни назначаемым.