message: Parse ConstantExpression with regular function
diff: @@ -35,10 +35,7 @@ std::tuple<bool, const uint8_t*> parseGlobalType(const uint8_t* pos)
  return {is_mutable, pos};
  }
  -template <>
  -struct parser<ConstantExpression>
  -{
  - parser_result<ConstantExpression> operator()(const uint8_t* pos)
  +inline parser_result<ConstantExpression> parse_constant_expression(const uint8_t* pos)
  {
  ConstantExpression result;
  @@ -84,7 +81,6 @@ struct parser<ConstantExpression>
  return {result, pos};
  }
  -};
  template <>
  struct parser<Global>
  @@ -93,7 +89,7 @@ struct parser<Global>
  {
  Global result;
  std::tie(result.is_mutable, pos) = parseGlobalType((pos));
  - std::tie(result.expression, pos) = parser<ConstantExpression>{}(pos);
  + std::tie(result.expression, pos) = parse_constant_expression(pos);
  return {result, pos};
  }
  @@ -209,7 +205,7 @@ struct parser<Element>
  throw parser_error{"unexpected tableidx value " + std::to_string(table_index)};
  ConstantExpression offset;
  - std::tie(offset, pos) = parser<ConstantExpression>{}(pos);
  + std::tie(offset, pos) = parse_constant_expression(pos);
  std::vector<FuncIdx> init;
  std::tie(init, pos) = parse_vec<FuncIdx>(pos);
  @@ -229,7 +225,7 @@ struct parser<Data>
  throw parser_error{"unexpected memidx value " + std::to_string(memory_index)};
  ConstantExpression offset;
  - std::tie(offset, pos) = parser<ConstantExpression>{}(pos);
  + std::tie(offset, pos) = parse_constant_expression(pos);
  std::vector<uint8_t> init;
  std::tie(init, pos) = parse_vec<uint8_t>(pos);
  