Можете ли вы обновить любую другую запись в этой таблице, или эта таблица сильно используется? Я думаю, что, пытаясь получить блокировку, которую необходимо обновить, установленный тайм-аут истекает. Вы можете увеличить время, которое может помочь.
Единственная ситуация, в которой неназванное пространство имен в заголовке может быть полезным, состоит в том, когда Вы хотите распределить код как заголовочные файлы только. Например, большое автономное подмножество Повышения является просто заголовками.
маркер ignore
для кортежей, упомянутых в другом ответе, является одним примером, _1
, _2
и т.д. связывают заполнителей, другие.
Я не вижу точки в помещении анонимного пространства имен в заголовочный файл. Я захватил стандарт и libstdc ++ заголовки, не нашли анонимных пространств имен независимо одного в tuple
заголовок (C++ 1x материал):
// A class (and instance) which can be used in 'tie' when an element
// of a tuple is not required
struct _Swallow_assign
{
template<class _Tp>
_Swallow_assign&
operator=(const _Tp&)
{ return *this; }
};
// TODO: Put this in some kind of shared file.
namespace
{
_Swallow_assign ignore;
}; // anonymous namespace
Это так, можно сделать
std::tie(a, std::ignore, b) = some_tuple;
, элементам some_tuple присваивают переменные в левой стороне (см. здесь ), подобная техника используется для этот итератор. Второй элемент проигнорирован.
, Но как они говорят, это должно быть помещено в .cpp файл, и один экземпляр должен быть совместно использован всеми пользователями. Они поместили бы объявление его в заголовок как это затем:
extern _Swallow_assign ignore;
Если бы это - инициализация, это, вероятно, было бы iostream
заголовок с (как istream
, ios
, и т.д.).
Я действительно не вижу положительного преимущества от использования анонимных пространств имен в заголовках. Беспорядок, который может следовать из наличия того же среднего объявления символа, в сущности, другая вещь в единицах компиляции, которые включают тот заголовок, был бы гарантируемым способом пойти преждевременно и крайне лысый.