class 模板 "std::pair" 的参数太少:将标准对作为变量函数中的参数传递

too few arguments for class template "std::pair" : Passing std pair as arguments in varidiac function

我必须将 std::string 中的 std::pair 传递给可变参数函数。 std::pair 在尝试使用 va_arg 宏访问 std::pair 时显示错误 too few arguments for class template "std::pair"

#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 pair<string,string>:

    typedef pair<string, string> StrStrPair;
    StrStrPair bulkData;
    bulkData = va_arg(args, StrStrPair);