Hello All!
>>Функция U<V, A>::instantiate используется в программе (см. 3.2/2), поэтому требуется наличие в программе её определения и эта функция инстанцируется (см. 14.7.1/2). Она, в свою очередь, инстанцирует S<V, A>.
Еще следует отметить необходимость использования трюка __declspec(dllexport) или __attribute((used)), чтобы некоторые шибко умные оптимизаторы (или линкеры) не выбросили S<V, A>::instance_:
BOOST_DLLEXPORT static S& instance_;
---
WBR