Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Implicit instantiation of undefined template 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >'

In the project I have been working on, we have to send Cocoa notifications from C++ sub-projects to the main project above it. To do this we construct a map to act as a key-value store for the userInfo dictionary of the notification.

In one of the projects, the following code compiles just fine:

std::map<std::string, std::string> *userInfo = new std::map<std::string, std::string>; char buffer[255];  sprintf(buffer, "%i", intValue1); userInfo->insert(std::pair<std::string, std::string>("intValue1", std::string(buffer)));  sprintf(buffer, "%i", intValue2); userInfo->insert(std::pair<std::string, std::string>("intValue2", std::string(buffer)));  if(condition)     userInfo->insert(std::pair<std::string, std::string>("conditionalValue", "true"));  PostCocoaNotification("notificationName", *userInfo); 

However, when this is copied into an identical file in another sub-project, the compiler throws the following on the userInfo->insert calls:

"Implicit instantiation of undefined template 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >'"  

..and it cannot find the function for PostCocoaNotification:

No matching function for call to 'PostCocoaNotification' 

Additionally, it throws the following errors in system headers:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/usr/include/c++/4.2.1/bits/stl_pair.h:73:11: Implicit instantiation of undefined template 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >' /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/usr/include/c++/4.2.1/bits/stl_pair.h:74:11: Implicit instantiation of undefined template 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >' /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/usr/include/c++/4.2.1/bits/stl_pair.h:73:11: Implicit instantiation of undefined template 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >' /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/usr/include/c++/4.2.1/bits/stl_tree.h:1324:13: Cannot initialize a parameter of type '_Link_type' (aka '_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > *') with an rvalue of type '_Const_Link_type' (aka 'const _Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > *') 

I've no idea what I've done to cause such chaos, especially when the code runs perfectly fine in another sub-project (successfully sending notifications). Any insight to the problem would be very welcome.

like image 243
Andrew Avatar asked Oct 07 '13 11:10

Andrew


2 Answers

You need to include this header:

#include <string> 
like image 126
Mauro Bilotti Avatar answered Sep 28 '22 02:09

Mauro Bilotti


Try adding below header,

#include <sstream>

https://www.cplusplus.com/reference/sstream/stringstream/stringstream/

like image 20
Kewin V Avatar answered Sep 28 '22 00:09

Kewin V