Jinja2cpp valueMap param multiple items 'no matching function for call' 错误

Jinja2cpp valueMap param multiple items 'no matching function for call' error

我已经从代码构建了 jinja2cpp。编译库和一切。

int main() {

    string source = R"(
My name is {{myName}}
    )";
    jinja2::Template tpl;
    jinja2::ValuesMap params {{"myName", "Mehmet"}};

    tpl.Load(source);

    string result = tpl.RenderAsString(params).value();

    cout << result;

    return 0;
}

控制台输出:我叫穆罕默德

但是当我尝试编译代码片段时。(https://github.com/jinja2cpp/Jinja2Cpp/wiki 中 enum2StringConvertor 的简化版本)。编译

int main() {

    string source = R"(
{% for user in users %}
{{user}}
{% endfor %}
    )";
    jinja2::Template tpl;
    jinja2::ValuesMap params {{"users", {"John", "Joe"}}}; //<<<<---THIS IS WRONG SOMEHOW

    tpl.Load(source);

    string result = tpl.RenderAsString(params).value();

    cout << result;

    return 0;
}

控制台输出:

18:54:24 **** Incremental Build of configuration Debug for project jinjaRender ****
make all 
Building file: ../src/jinjaRender.cpp
Invoking: GCC C++ Compiler
g++ -I"/home/mehmet/eclipse-workspace/jinjaRender/include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/jinjaRender.d" -MT"src/jinjaRender.o" -o "src/jinjaRender.o" "../src/jinjaRender.cpp"
../src/jinjaRender.cpp: In function ‘int main()’:
../src/jinjaRender.cpp:31:57: error: no matching function for call to ‘jinja2::ValuesMap::ValuesMap(<brace-enclosed initializer list>)’
   31 |     jinja2::ValuesMap params {{"users", {"John", "Joe"}}};
      |                                                         ^
In file included from /usr/include/c++/9/unordered_map:47,
                 from /home/mehmet/eclipse-workspace/jinjaRender/include/jinja2cpp/value.h:12,
                 from /home/mehmet/eclipse-workspace/jinjaRender/include/jinja2cpp/error_info.h:5,
                 from /home/mehmet/eclipse-workspace/jinjaRender/include/jinja2cpp/template.h:5,
                 from ../src/jinjaRender.cpp:2:
/usr/include/c++/9/bits/unordered_map.h:151:7: note: candidate: ‘std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map(std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::size_type, const hasher&, const key_equal&, const allocator_type&) [with _Key = std::__cxx11::basic_string<char>; _Tp = jinja2::Value; _Hash = std::hash<std::__cxx11::basic_string<char> >; _Pred = std::equal_to<std::__cxx11::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, jinja2::Value> >; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::size_type = long unsigned int; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::hasher = std::hash<std::__cxx11::basic_string<char> >; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::key_equal = std::equal_to<std::__cxx11::basic_string<char> >; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::allocator_type = std::allocator<std::pair<const std::__cxx11::basic_string<char>, jinja2::Value> >]’
  151 |       unordered_map(size_type __n,

你能帮帮我吗?为什么会这样?如何编译这个简单的程序:)赞赏

这个有效:

jinja2::ValuesMap params {{"users", jinja2::ValuesList({"John", "Joe"})}};