这个SO答案列出了C++ 17分解声明(以前称为"结构化绑定")的一些缺点.例如,您不能为新变量提供显式类型,依此类推.但是我遇到的一个很大的缺点就是没有提到,所以我想知道是否有一个已知的解决方法,我只是没想到.
考虑这个JSON解析代码(可能包含其他错误;请出于此问题的目的忽略它们):
using Value = std::any;
using String = std::string;
using Object = std::map<String, Value>;
std::pair<String, const char *> load_string(const char *p, const char *end);
std::pair<Value, const char *> load_value(const char *p, const char *end);
const char *skip_spaces(const char *p, const char *end);
std::pair<Object, const char *> load_object(const char *p, const char *end)
{
p = skip_spaces(p, end);
if (p == end || *p++ != '{') throw ParseError("Expected {");
p = skip_spaces(p, end);
Object result;
if …Run Code Online (Sandbox Code Playgroud)