该功能几乎什么都不做的目的是什么?

时间:2019-01-07 13:53:16

标签: c++ rapidjson

我目前正在阅读RapidJSON的代码,但我听不懂这段代码:

$clonedWorksheet = Worksheet::where('id', $id)->get()->load('records');

$worksheet = new Worksheet;

$worksheet->employee_id = $request->employee;
$worksheet->workday = $request->workday;

$worksheet->save();

foreach ($clonedWorksheet->records() as $clonedRecord) {
  $record = new Record;

  $record->from = $clonedRecord->from;
  $record->to = $clonedRecord->to;
  $record->estimated = $clonedRecord->estimated;
  $record->place_id = $clonedRecord->place_id;
  $record->worksheet_id = $worksheet->id;
  $record->vehicle_id = $clonedRecord->vehicle_id;
  $record->tool_id = $clonedRecord->tool_id;
  $record->job_id = $clonedRecord->job_id;
  $record->comment = $clonedRecord->comment;

  $worksheet->records()->save($record);
}

谁能为我解释“ PutReserve”的目的?

1 个答案:

答案 0 :(得分:7)

此代码允许其他人将PutReserve专用于自己的流类型。这使其他形式的流可以选择对此处传递的信息采取行动-在这种情况下,count个字符将被插入流中。

您是正确的,该存储库目前没有这样的专业化,因此仅此代码就不会发生任何事情。但是,如果打算将此作为用户扩展的选项(或库中将来的扩展),它仍然有其用途。而且,如果仍未对其进行专业化处理,则编译器当然会看到该函数不执行任何操作并完全对其进行了优化。


在实践中,想要以MyStream类型使用此库的用户将对以下功能进行专门化:

template<> void PutReserve(MyStream& stream, size_t count) {
  // ...user code
}

但是请注意,在将来的C ++版本中,C ++标准库将消除所有形式的功能模板专业化(在namespace std中),将其替换为仿函数类作为“定制点”。原理请参见this question