@@ -353,7 +353,7 @@ class TypeSystemClang : public TypeSystem {
353
353
bool IsValid () const {
354
354
// Having a pack name but no packed args doesn't make sense, so mark
355
355
// these template parameters as invalid.
356
- if (pack_name && !packed_args)
356
+ if (HasPackName () && !packed_args)
357
357
return false ;
358
358
return args.size () == names.size () &&
359
359
(!packed_args || !packed_args->packed_args );
@@ -394,14 +394,14 @@ class TypeSystemClang : public TypeSystem {
394
394
return packed_args->GetArgs ();
395
395
}
396
396
397
- bool HasPackName () const { return pack_name && pack_name[ 0 ] ; }
397
+ bool HasPackName () const { return pack_name. has_value () ; }
398
398
399
399
llvm::StringRef GetPackName () const {
400
400
assert (HasPackName ());
401
- return pack_name;
401
+ return pack_name. value () ;
402
402
}
403
403
404
- void SetPackName (char const *name) { pack_name = name; }
404
+ void SetPackName (char const *name) { pack_name. emplace ( name) ; }
405
405
406
406
void SetParameterPack (std::unique_ptr<TemplateParameterInfos> args) {
407
407
packed_args = std::move (args);
@@ -413,7 +413,7 @@ class TypeSystemClang : public TypeSystem {
413
413
llvm::SmallVector<const char *, 2 > names;
414
414
llvm::SmallVector<clang::TemplateArgument, 2 > args;
415
415
416
- const char * pack_name = nullptr ;
416
+ std::optional<std::string> pack_name;
417
417
std::unique_ptr<TemplateParameterInfos> packed_args;
418
418
};
419
419
0 commit comments