Piotr Padlewski via llvm-dev
2017-Jan-09 18:31 UTC
[llvm-dev] [cfe-dev] Modernizing LLVM Coding Style Guide and enforcing Clang-tidy
2017-01-09 19:25 GMT+01:00 Mehdi Amini <mehdi.amini at apple.com>:> > On Jan 9, 2017, at 10:20 AM, Reid Kleckner via llvm-dev < > llvm-dev at lists.llvm.org> wrote: > > On Mon, Jan 9, 2017 at 7:25 AM, Piotr Padlewski via llvm-dev < > llvm-dev at lists.llvm.org> wrote: > >> 2017-01-09 16:15 GMT+01:00 Renato Golin <renato.golin at linaro.org>: >> >>> On 9 January 2017 at 14:17, Piotr Padlewski via cfe-dev >>> <cfe-dev at lists.llvm.org> wrote: >>> > - prefer "using' instead of "typedef" >>> > - use default member initialization >>> > - use default, override, delete >>> > - skip "virtual" with override >>> >>> I thought we had all of those already... >>> >>> Nope, some people use it, but I still see a lot of new code with >> typedefs. >> I would like to have it written in style guide so it will be easier to >> convince to change in review. >> > > The last two are enforced by compiler warnings now. The second is hard > because of bitfields. > > I object to the first. If you need a new type name, use a typedef. It's > time honored and everyone, including C programmers, will know what you're > doing. I don't understand why people push the new thing just for the sake > of new-ness. > > > `using` handles strictly more cases than `typedef`, in particular partial > specialization of templates. So because we’ll end up with `using` anyway, > uniformity can be valuable. So that could be a motivation: since `using` is > needed anyway, might be better to just use it always (I’m not saying it is > a “strong” motivation though, just some piece of rational). > (I also find that typedef of function pointers in particular are terrible, > and `using` is much better for these, but that can be a matter of taste). > > — > Mehdi >+1 Exactly this. I don't think C programmer will not understand using. The "=" makes it much simpler to read, even if it is the first time you see it, which is not the case of typedef. typedef MyType::NestedType (*fptr)(const MyOhterType&); or using fptr = MyType::NestedType (*)(const MyOhterType&); Typedefs with function pointers are used in couple of places in LLVM and I find it terible to read. So it is not about new-ness. Trust me, I would never use typedef if using was first :) -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170109/23a4600a/attachment.html>
Sanjoy Das via llvm-dev
2017-Jan-09 22:52 UTC
[llvm-dev] [cfe-dev] Modernizing LLVM Coding Style Guide and enforcing Clang-tidy
On Mon, Jan 9, 2017 at 10:31 AM, Piotr Padlewski via llvm-dev <llvm-dev at lists.llvm.org> wrote:> > > 2017-01-09 19:25 GMT+01:00 Mehdi Amini <mehdi.amini at apple.com>: >> >> >> On Jan 9, 2017, at 10:20 AM, Reid Kleckner via llvm-dev >> <llvm-dev at lists.llvm.org> wrote: >> >> On Mon, Jan 9, 2017 at 7:25 AM, Piotr Padlewski via llvm-dev >> <llvm-dev at lists.llvm.org> wrote: >>> >>> 2017-01-09 16:15 GMT+01:00 Renato Golin <renato.golin at linaro.org>: >>>> >>>> On 9 January 2017 at 14:17, Piotr Padlewski via cfe-dev >>>> <cfe-dev at lists.llvm.org> wrote: >>>> > - prefer "using' instead of "typedef" >>>> > - use default member initialization >>>> > - use default, override, delete >>>> > - skip "virtual" with override >>>> >>>> I thought we had all of those already... >>>> >>> Nope, some people use it, but I still see a lot of new code with >>> typedefs. >>> I would like to have it written in style guide so it will be easier to >>> convince to change in review. >> >> >> The last two are enforced by compiler warnings now. The second is hard >> because of bitfields. >> >> I object to the first. If you need a new type name, use a typedef. It's >> time honored and everyone, including C programmers, will know what you're >> doing. I don't understand why people push the new thing just for the sake of >> new-ness. >> >> >> `using` handles strictly more cases than `typedef`, in particular partial >> specialization of templates. So because we’ll end up with `using` anyway, >> uniformity can be valuable. So that could be a motivation: since `using` is >> needed anyway, might be better to just use it always (I’m not saying it is a >> “strong” motivation though, just some piece of rational). >> (I also find that typedef of function pointers in particular are terrible, >> and `using` is much better for these, but that can be a matter of taste). >> >> — >> Mehdi > > > +1 Exactly this. > I don't think C programmer will not understand using. The "=" makes it much > simpler to read, even if it is the first time you see it, which is not the > case of typedef. > > typedef MyType::NestedType (*fptr)(const MyOhterType&); > or > using fptr = MyType::NestedType (*)(const MyOhterType&);I would prefer using typedefs at least for function pointers. I find either of
Sanjoy Das via llvm-dev
2017-Jan-09 22:58 UTC
[llvm-dev] [cfe-dev] Modernizing LLVM Coding Style Guide and enforcing Clang-tidy
Hi, Sorry I fat fingered an earlier send in the previous email. I was trying to say: On Mon, Jan 9, 2017 at 2:52 PM, Sanjoy Das <sanjoy at playingwithpointers.com> wrote:>> +1 Exactly this. >> I don't think C programmer will not understand using. The "=" makes it much >> simpler to read, even if it is the first time you see it, which is not the >> case of typedef. >> >> typedef MyType::NestedType (*fptr)(const MyOhterType&); >> or >> using fptr = MyType::NestedType (*)(const MyOhterType&); >I would prefer to please keep using typedefs at least for function pointers. I find either of typedef MyType::NestedType (*fptr)(const MyOhterType&); or typedef int fptr(const int&); void f(fptr* ptr) { ... } easier to read than the "using" declaration (especially the second form, with the explicit `fptr* ptr`). -- Sanjoy
Apparently Analagous Threads
- [cfe-dev] Modernizing LLVM Coding Style Guide and enforcing Clang-tidy
- [cfe-dev] Modernizing LLVM Coding Style Guide and enforcing Clang-tidy
- [cfe-dev] Modernizing LLVM Coding Style Guide and enforcing Clang-tidy
- [cfe-dev] Modernizing LLVM Coding Style Guide and enforcing Clang-tidy
- [LLVMdev] Cannot interchange "literal" and "identified" structs