no1msd / json.hpp Goto Github PK
View Code? Open in Web Editor NEWA tiny C++ JSON parsing library using Boost.Spirit
License: MIT License
A tiny C++ JSON parsing library using Boost.Spirit
License: MIT License
Been trying to get your wonderful looking c++ mstch project running, but I've been having some boost related problems. I'm a bit of a c++ noob, was hoping you might be able to help me get going? I'm running on OSX, my code is almost cut/pasted from the example
My goal is to generate a templating library that can be used crossplatform on both iOS and Android operating systems (and other platforms as needed). Thanks! Please let me know if there's any other info I can provide
#include <string>
#include <map>
#include <iostream>
#include "json.hpp"
int main() {
using boost::get;
std::string json_string{
"{\"names\": ["
" {\"name\": \"Chris\"},"
" {\"name\": \"Mark\"},"
" {\"name\": \"Scott\"}"
"]}"};
auto data = json::parse(json_string);
for(auto& name_item: get<json::array>(get<json::map>(data)["names"]))
std::cout << get<std::string>(get<json::map>(name_item)["name"]) << std::endl;
return 0;
}
and the errors I get are below (note - I removed some of the warnings about deprecated boost files to keep the log below minimal)
Build target templator of project templator with configuration Debug
CompileC DerivedData/templator/Build/Intermediates/templator.build/Debug/templator.build/Objects-normal/x86_64/main.o templator/main.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
cd /Users/ajay/Documents/templator
export LANG=en_US.US-ASCII
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x c++ -arch x86_64 -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -std=c++11 -stdlib=libc++ -fmodules -fmodules-cache-path=/Users/ajay/Documents/templator/DerivedData/ModuleCache -fmodules-prune-interval=86400 -fmodules-prune-after=345600 -fbuild-session-file=/Users/ajay/Documents/templator/DerivedData/ModuleCache/Session.modulevalidation -fmodules-validate-once-per-build-session -Wnon-modular-include-in-framework-module -Werror=non-modular-include-in-framework-module -Wno-trigraphs -fpascal-strings -O0 -fno-common -Wno-missing-field-initializers -Wno-missing-prototypes -Werror=return-type -Wunreachable-code -Werror=deprecated-objc-isa-usage -Werror=objc-root-class -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wshorten-64-to-32 -Wno-newline-eof -Wno-c++11-extensions -DDEBUG=1 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -fasm-blocks -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -mmacosx-version-min=10.11 -g -fvisibility-inlines-hidden -Wno-sign-conversion -iquote /Users/ajay/Documents/templator/DerivedData/templator/Build/Intermediates/templator.build/Debug/templator.build/templator-generated-files.hmap -I/Users/ajay/Documents/templator/DerivedData/templator/Build/Intermediates/templator.build/Debug/templator.build/templator-own-target-headers.hmap -I/Users/ajay/Documents/templator/DerivedData/templator/Build/Intermediates/templator.build/Debug/templator.build/templator-all-target-headers.hmap -iquote /Users/ajay/Documents/templator/DerivedData/templator/Build/Intermediates/templator.build/Debug/templator.build/templator-project-headers.hmap -I/Users/ajay/Documents/templator/DerivedData/templator/Build/Products/Debug/include -Iheaders -Iheaders/dist -Iheaders/json -Iheaders/mstch -Iheaders/dist/json -I/usr/local/include -I/Users/ajay/Documents/templator/DerivedData/templator/Build/Intermediates/templator.build/Debug/templator.build/DerivedSources/x86_64 -I/Users/ajay/Documents/templator/DerivedData/templator/Build/Intermediates/templator.build/Debug/templator.build/DerivedSources -F/Users/ajay/Documents/templator/DerivedData/templator/Build/Products/Debug -MMD -MT dependencies -MF /Users/ajay/Documents/templator/DerivedData/templator/Build/Intermediates/templator.build/Debug/templator.build/Objects-normal/x86_64/main.d --serialize-diagnostics /Users/ajay/Documents/templator/DerivedData/templator/Build/Intermediates/templator.build/Debug/templator.build/Objects-normal/x86_64/main.dia -c /Users/ajay/Documents/templator/templator/main.cpp -o /Users/ajay/Documents/templator/DerivedData/templator/Build/Intermediates/templator.build/Debug/templator.build/Objects-normal/x86_64/main.o
^
In file included from /Users/ajay/Documents/templator/templator/main.cpp:1:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:439:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm:627:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/utility:299:15: error: no viable overloaded '='
first = __p.first;
~~~~~ ^ ~~~~~~~~~
In file included from /Users/ajay/Documents/templator/templator/main.cpp:2:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map:646:15: note: in instantiation of member function 'std::__1::pair<const std::__1::basic_string<char>, boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > > >::operator=' requested here
{__nc = __v.__cc; return *this;}
^
In file included from /Users/ajay/Documents/templator/templator/main.cpp:2:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map:438:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__tree:1249:35: note: in instantiation of member function 'std::__1::__value_type<const std::__1::basic_string<char>, boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > > >::operator=' requested here
__cache->__value_ = *__first;
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__tree:1190:9: note: in instantiation of function template specialization 'std::__1::__tree<std::__1::__value_type<const std::__1::basic_string<char>, boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > > >, std::__1::__map_value_compare<const std::__1::basic_string<char>, std::__1::__value_type<const std::__1::basic_string<char>, boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > > >, std::__1::less<const std::__1::basic_string<char> >, true>, std::__1::allocator<std::__1::__value_type<const std::__1::basic_string<char>, boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > > > > >::__assign_multi<std::__1::__tree_const_iterator<std::__1::__value_type<const std::__1::basic_string<char>, boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > > >, std::__1::__tree_node<std::__1::__value_type<const std::__1::basic_string<char>, boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > > >, void *> *, long> >' requested here
__assign_multi(__t.begin(), __t.end());
^
In file included from /Users/ajay/Documents/templator/templator/main.cpp:2:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map:934:21: note: in instantiation of member function 'std::__1::__tree<std::__1::__value_type<const std::__1::basic_string<char>, boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > > >, std::__1::__map_value_compare<const std::__1::basic_string<char>, std::__1::__value_type<const std::__1::basic_string<char>, boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > > >, std::__1::less<const std::__1::basic_string<char> >, true>, std::__1::allocator<std::__1::__value_type<const std::__1::basic_string<char>, boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > > > > >::operator=' requested here
__tree_ = __m.__tree_;
^
In file included from /Users/ajay/Documents/templator/templator/main.cpp:4:
In file included from /Users/ajay/Documents/templator/headers/json.hpp:1:
In file included from /usr/local/include/boost/spirit/include/qi.hpp:16:
In file included from /usr/local/include/boost/spirit/home/qi.hpp:14:
In file included from /usr/local/include/boost/spirit/home/qi/action.hpp:14:
In file included from /usr/local/include/boost/spirit/home/qi/action/action.hpp:14:
In file included from /usr/local/include/boost/spirit/home/qi/meta_compiler.hpp:15:
In file included from /usr/local/include/boost/spirit/home/qi/domain.hpp:16:
In file included from /usr/local/include/boost/spirit/home/support/info.hpp:15:
In file included from /usr/local/include/boost/variant/recursive_variant.hpp:17:
In file included from /usr/local/include/boost/variant/detail/enable_recursive.hpp:34:
/usr/local/include/boost/variant/recursive_wrapper.hpp:143:17: note: in instantiation of member function 'std::__1::map<const std::__1::basic_string<char>, boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > >, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > > > > >::operator=' requested here
this->get() = rhs;
^
/usr/local/include/boost/variant/recursive_wrapper.hpp:60:9: note: (skipping 44 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
assign( rhs.get() );
^
In file included from /Users/ajay/Documents/templator/templator/main.cpp:4:
In file included from /Users/ajay/Documents/templator/headers/json.hpp:1:
In file included from /usr/local/include/boost/spirit/include/qi.hpp:16:
In file included from /usr/local/include/boost/spirit/home/qi.hpp:21:
In file included from /usr/local/include/boost/spirit/home/qi/nonterminal.hpp:14:
/usr/local/include/boost/spirit/home/qi/nonterminal/rule.hpp:183:19: note: in instantiation of function template specialization 'boost::function<bool (std::__1::__wrap_iter<const char *> &, const std::__1::__wrap_iter<const char *> &, boost::spirit::context<boost::fusion::cons<std::__1::vector<boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > >, std::__1::allocator<boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > > > > &, boost::fusion::nil_>, boost::fusion::vector<> > &, const boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::ascii> > &)>::operator=<boost::spirit::qi::detail::parser_binder<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::cons<boost::spirit::qi::optional<boost::spirit::qi::list<boost::spirit::qi::reference<const boost::spirit::qi::rule<std::__1::__wrap_iter<const char *>, boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > > (), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::ascii> >, 0>, boost::spirit::unused_type, boost::spirit::unused_type> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil_> > > >, mpl_::bool_<false> > >' requested here
lhs.f = detail::bind_parser<Auto>(
^
/usr/local/include/boost/spirit/home/qi/nonterminal/rule.hpp:221:13: note: in instantiation of function template specialization 'boost::spirit::qi::rule<std::__1::__wrap_iter<const char *>, std::__1::vector<boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > >, std::__1::allocator<boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > > > > (), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::ascii> >, 0>, boost::spirit::unused_type, boost::spirit::unused_type>::define<mpl_::bool_<false>, boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const char &>, 0>, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::negate, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::modulus, boost::proto::argsns_::list2<boost::spirit::qi::rule<std::__1::__wrap_iter<const char *>, boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > > (), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::ascii> >, 0>, boost::spirit::unused_type, boost::spirit::unused_type> &, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const char &>, 0> >, 2> &>, 1> &>, 2> &, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const char &>, 0> >, 2> >' requested here
define<mpl::false_>(*this, expr, traits::matches<qi::domain, Expr>());
^
In file included from /Users/ajay/Documents/templator/templator/main.cpp:4:
/Users/ajay/Documents/templator/headers/json.hpp:39:17: note: in instantiation of function template specialization 'boost::spirit::qi::rule<std::__1::__wrap_iter<const char *>, std::__1::vector<boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > >, std::__1::allocator<boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > > > > (), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::ascii> >, 0>, boost::spirit::unused_type, boost::spirit::unused_type>::operator=<boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const char &>, 0>, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::negate, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::modulus, boost::proto::argsns_::list2<boost::spirit::qi::rule<std::__1::__wrap_iter<const char *>, boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > > (), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::ascii> >, 0>, boost::spirit::unused_type, boost::spirit::unused_type> &, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const char &>, 0> >, 2> &>, 1> &>, 2> &, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const char &>, 0> >, 2> >' requested here
array_rule = '[' >> -(value_rule % ',') >> ']';
^
/Users/ajay/Documents/templator/headers/json.hpp:99:72: note: in instantiation of member function 'json::details::json_grammar<std::__1::__wrap_iter<const char *>, boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > >, std::__1::map<const std::__1::basic_string<char>, boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > >, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > > > > >, std::__1::vector<boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > >, std::__1::allocator<boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > > > > >::json_grammar' requested here
details::json_grammar<std::string::const_iterator, Node, Map, Array> json;
^
/Users/ajay/Documents/templator/templator/main.cpp:15:20: note: in instantiation of function template specialization 'json::parse<boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > >, std::__1::map<const std::__1::basic_string<char>, boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > >, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > > > > >, std::__1::vector<boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > >, std::__1::allocator<boost::variant<boost::detail::variant::recursive_flag<nullptr_t>, std::__1::basic_string<char>, int, double, bool, std::__1::map<const std::__1::basic_string<char>, boost::recursive_variant_, std::__1::less<const std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::recursive_variant_> > >, std::__1::vector<boost::recursive_variant_, std::__1::allocator<boost::recursive_variant_> > > > > >' requested here
auto data = json::parse(json_string);
^
In file included from /Users/ajay/Documents/templator/templator/main.cpp:1:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:1376:19: note: candidate function not viable: 'this' argument has type 'const std::__1::basic_string<char>', but method is not marked const
basic_string& operator=(const basic_string& __str);
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:1379:19: note: candidate function not viable: 'this' argument has type 'const std::__1::basic_string<char>', but method is not marked const
basic_string& operator=(basic_string&& __str)
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:1383:45: note: candidate function not viable: 'this' argument has type 'const std::__1::basic_string<char>', but method is not marked const
_LIBCPP_INLINE_VISIBILITY basic_string& operator=(const value_type* __s) {return assign(__s);}
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:1384:19: note: candidate function not viable: 'this' argument has type 'const std::__1::basic_string<char>', but method is not marked const
basic_string& operator=(value_type __c);
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:1387:19: note: candidate function not viable: 'this' argument has type 'const std::__1::basic_string<char>', but method is not marked const
basic_string& operator=(initializer_list<value_type> __il) {return assign(__il.begin(), __il.size());}
^
3 warnings and 1 error generated.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.