link error although all constructors appear to be there

I'm getting a massive 1300 char link error with VC10. It appears to complain that it can't see the constructor although the constructor is definitely there.

Error:
test_GatewayNS.obj : error LNK2019: unresolved external symbol "public: void __thiscall std::allocator<class BinarySearchVector::ElementTemplate<class Gateway,unsigned __int64> *>::construct(class BinarySearchVector::ElementTemplate<class Gateway,unsigned __int64> * *,class BinarySearchVector::ElementTemplate<class Gateway,unsigned __int64> * const &)" (?construct@?$allocator@PAV?$ElementTemplate@VGateway@@_K@BinarySearchVector@@@std@@QAEXPAPAV?$ElementTemplate@VGateway@@_K@BinarySearchVector@@ABQAV34@@Z) referenced in function "void __cdecl std::_Cons_val<class std::allocator<class BinarySearchVector::ElementTemplate<class Gateway,unsigned __int64> *>,class BinarySearchVector::ElementTemplate<class Gateway,unsigned __int64> *,class BinarySearchVector::ElementTemplate<class Gateway,unsigned __int64> * const &>(class std::allocator<class BinarySearchVector::ElementTemplate<class Gateway,unsigned __int64> *> &,class BinarySearchVector::ElementTemplate<class Gateway,unsigned __int64> * *,class BinarySearchVector::ElementTemplate<class Gateway,unsigned __int64> * const &)" (??$_Cons_val@V?$allocator@PAV?$ElementTemplate@VGateway@@_K@BinarySearchVector@@@std@@PAV?$ElementTemplate@VGateway@@_K@BinarySearchVector@@ABQAV34@@std@@YAXAAV?$allocator@PAV?$ElementTemplate@VGateway@@_K@BinarySearchVector@@@0@PAPAV?$ElementTemplate@VGateway@@_K@BinarySearchVector@@ABQAV23@@Z)
1>


However, the constructors seem to be there and if I copy them into my program just to make sure - the compiler complains that they are already defined:

namespace BinarySearchVector
{
template <class ElementType, class IdType> class ElementTemplate //allows comparison functions to be redefined
{
public:
ElementTemplate(IdType myId) : id(myId), tickCount(0), requestingDeletion(false) {};
};
};

// declared type already set
Gateway::Gateway(EuiType eui, sockaddr_in const* myPullIpAddress)
:
BinarySearchVector::ElementTemplate<Gateway, EuiType>(eui),
position(maxNumberOfGPSReadingsUsedToFindAverage, minNumberOfGPSReadingsUsedToFindAverage),
lastNvStoreTime_ms(0)
{
if (myPullIpAddress)
pullIpAddress = *myPullIpAddress;
else
SetInvalid(pullIpAddress);
}


Any clues as to what I'm missing ?


regards
Topic archived. No new replies allowed.