@@ -206,7 +206,7 @@ class FastWordpieceBuilder {
206206 trie_array_[node_id] &= 0xFFFFFEFF ;
207207 }
208208
209- absl::optional <StringVocab> vocab_;
209+ std::unique_ptr <StringVocab> vocab_;
210210
211211 int max_bytes_per_token_ = -1 ;
212212
@@ -264,7 +264,7 @@ absl::Status FastWordpieceBuilder::BuildModel(
264264 no_pretokenization_ = no_pretokenization;
265265 support_detokenization_ = support_detokenization;
266266
267- vocab_. emplace (vocab);
267+ vocab_ = std::make_unique<StringVocab> (vocab);
268268 if (vocab_->Size () != vocab.size ()) {
269269 return absl::FailedPreconditionError (
270270 " Tokens in the vocabulary must be unique." );
@@ -830,7 +830,7 @@ absl::Status FastWordpieceBuilder::PrecomputeResultForSuffixIndicator() {
830830 LookupStatus status = WordpieceTokenize (
831831 suffix_indicator_, max_bytes_per_token_, /* max_chars_per_subtoken=*/ -1 ,
832832 suffix_indicator_, /* use_unknown_token=*/ true , unk_token_,
833- /* split_unknown_characters=*/ false , & vocab_.value (), &subwords,
833+ /* split_unknown_characters=*/ false , vocab_.get (), &subwords,
834834 &begin_offset, &end_offset, &num_word_pieces);
835835 precomputed_result_for_suffix_indicator_.reserve (subwords.size ());
836836 if (!status.success ) {
0 commit comments