The capture-list is a comma-separated list of zero or more captures, optionally beginning with the capture-default. The only capture defaults are & (implicitly catch the odr-used automatic variables and *this by reference) and = (implicitly catch the odr-used automatic variables by copy and implicitly catch *this by reference if it is odr-used).
this захватывается по ссылке.
[this] captures the this pointer by value
в словаре нельзя так хранить вызов функции ?
namespace NodeListTraits
{
template< typename TNodeType, typename TDataype >
void AddHead( TDataype data, TNodeType node )
{
// Общая реализация.
};
template< typename TNodeType >
void AddHead( Storage_device* data, TNodeType node )
{
// Спецификация для `Storage_device`.
};
};
template< typename TNodeType, typename TDataype >
void List<TNodeType, TDataype>::AddHead( TDataype data )
{
// ...
// Черты лучше вызывать только через ADL.
NodeListTraits::AddHead( data, node );
}
Если так, то `native_handle()` у `std::thread` будет хранить HANDLE потока, приведенный к void*.
Источник: https://msdn.microsoft.com/en-us/library/hh920601....
Следовательно, nullptr там может лежать в двух случаях, которые по своей сути одинаковы:
1- объект потока не был инициализирован;
2- объект потока был отвязан от потока - thread.detach().
В любом из этих случаев объект потока не связан с реальным потоком.
Значит выход - пожалуй, detach надо делать в другое время. А может его и вовсе не стоит делать?