nicovank added a comment.

As you can see, this will fail some tests as there is one corner case which is 
tricky to handle:

  std::vector<std::tuple<std::tuple<int, int>>> vec;
  // This is valid and should not be changed.
  vec.emplace_back(std::make_tuple(13, 31));

Does anyone have a suggestion for a good way to handle this?

Ideally, it would be nice to just check that the type of the temporary matches 
the type of the `value_type`, but I've tried that with a simple `==`, and it 
then becomes a problem with strings, where for example

  std::vector<std::pair<std::string, std::string>> vec;
  vec.emplace_back(std::make_pair("foo", "bar"));

would not be changed as it would list the pair as a `std::pair<const char*, 
const char*>`, and not match with `std::pair<std::string, std::string>`.
Is there some way that I couldn't find to check if two `clang::Types` are 
"compatible"?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D101471/new/

https://reviews.llvm.org/D101471

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to