Я сам столкнулся с этим дизайнерским решением и думаю, что дополнительная самостоятельная документация о том, чтобы иметь его в качестве участника, могла бы стоить того.Например, кто-то может спросить «почему класс не подлежит копированию?».
class VertexBuffer
{
std::sr1::noncopyable<GLint> m_vbo;
...
};
Это теперь конкретно говорит мне, что класс не копируется, потому что если OpenGL VBO будет освобожден дважды, это будетошибка.
Например, в предыдущем примере;Я могу скопировать собаку, так почему ваш автомобиль настолько особенный, что я не могу его скопировать?
Я снова соединяю это с такими вещами, как zeroinitialized / valueinitialized, для дополнительной документации, которая мне не нужна, чтобы гарантировать, что эти переменные былиназначен до того, как я их использую.
class VertexBuffer
{
std::sr1::noncopyable<GLint> m_vbo;
std::sr1::zeroinitialized<int> m_vertexCount;
};
Я немного опоздал на эту вечеринку, но есть ли у кого-нибудь еще предложения?