3
Есть ли способ определить, что какой-то тип не копируется во время компиляции? мне нужно следующий:Есть ли какой-либо способ static_assert, что аргумент шаблона не подлежит копированию?
template<typename T, unsigned long long MaxSize>
struct circular_buffer : boost::noncopyable {
static_assert(typeof(T) ?????, "T must be noncopyable!");
};
Почему это имеет значение, если 'T' можно копировать, если вы не копируете объекты' T'? Если бы вы использовали возможность копирования для выбора между различными реализациями, это имело бы смысл, но я не могу представить себе, почему вы хотели бы ограничить что-то работать только с не подлежащими копированию объектами. Очевидно, что все, что вы можете сделать с не скопированным типом, вы также можете сделать с помощью типа с возможностью копирования. – Casey
@Casey, T не является однородным типом - поскольку это последнее поле, имеются данные char [0]. Мне нужен буфер spsc-lockfree для гетерогенных типов - и я хочу, чтобы он был максимально безопасным – nothrow