Я должен передать std::pair из std::string в переменную функцию. std::pair показывает ошибку too few arguments for class template "std::pair" при попытке доступа к std::pair с помощью макроса va_arg.
std::pair
std::string
too few arguments for class template "std::pair"
va_arg
#include <stdarg.h> #include <tuple> #include <string> using std::pair; using std::string; bool EncodeJSonData(pair<string,string> inbulkData ...) { va_list args; va_start(args, inbulkData); int count = 5; while(count--) { pair<string,string> bulkData; bulkData = va_arg(args, pair<string,string>); //here is the error } va_end(args); return true; }
Чего здесь не хватает,
va_arg - это макрос, а такой символ, как ',', может привести к сбою разбора макроса
','
Таким образом, решение typedef the pair<string,string>:
pair<string,string>
typedef pair<string, string> StrStrPair; StrStrPair bulkData; bulkData = va_arg(args, StrStrPair);