omtcyfz added inline comments. ================ Comment at: clang-tidy/readability/ElseAfterReturnCheck.cpp:45 @@ +44,3 @@ + for (const auto &BindingName : + {"return", "continue", "break", "goto", "throw"}) { + if (Result.Nodes.getNodeAs<Stmt>(BindingName)) { ---------------- aaron.ballman wrote: > omtcyfz wrote: > > aaron.ballman wrote: > > > omtcyfz wrote: > > > > alexfh wrote: > > > > > This won't work in MSVC2013, I think. Just add a `const char > > > > > *Labels[] = {"return", ...` (add more consts, constexprs or statics, > > > > > if you like ;) > > > > Hm, I'm confused. What exactly wouldn't work in MSVC? > > > This one *will* work in MSVC 2013 (it was a different initializer list > > > that @alexfh was thinking of, perhaps, where the deduced type of the list > > > was a bit more complex). I just tried it out and the above construct > > > compiles fine with MSVC. > > > > > > That being said, `const auto &` is the wrong type here, it should be > > > `const auto *`. > > Hm, I'm confused. Why should it be a pointer? > > > > So, when I have something like: > > ``` > > std::vector<unsigned> vec = {1, 2, 3}; > > for (const auto &x : vec) ... > > ``` > > > > This is right, I guess. Why is that different with init list? > The deduced type for the code as-written is `const char * const &`, which > isn't wrong, it's just not particularly useful. If you switch to `const auto > *`, the deduced type is the much more reasonable `const char *`. Ah... Thank you very much! Now I get it. I thought for whatever reason that there is implicit conversion to `std::string`.
https://reviews.llvm.org/D23265 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits