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"})}};
我已经从代码构建了 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"})}};