Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c++ > #86398
| Path | csiph.com!tncsrv06.tnetconsulting.net!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer01.iad!feed-me.highwinds-media.com!peer02.ams4!peer.am4.highwinds-media.com!news.highwinds-media.com!fx02.ams4.POSTED!not-for-mail |
|---|---|
| From | Mr Flibble <flibble@reddwarf.jmc.corp> |
| Newsgroups | comp.lang.c++ |
| Subject | Re: What is the good of new way of coding? |
| Message-ID | <20220917222122.00004f30@reddwarf.jmc.corp> (permalink) |
| References | <5e8b4f88-2ecf-4313-be63-4f3ff225967dn@googlegroups.com> <slrntibmre.1nb3.kempe@renge.lysator.liu.se> <tg4m8v$6as3$1@dont-email.me> <slrnticcrk.1nb3.kempe@renge.lysator.liu.se> <20220917221834.00005667@reddwarf.jmc.corp> |
| Organization | Jupiter Mining Corporation |
| X-Newsreader | Claws Mail 4.1.0 (GTK 3.24.33; x86_64-w64-mingw32) |
| MIME-Version | 1.0 |
| Content-Type | text/plain; charset=US-ASCII |
| Content-Transfer-Encoding | 7bit |
| Lines | 97 |
| X-Complaints-To | abuse@eweka.nl |
| NNTP-Posting-Date | Sat, 17 Sep 2022 21:21:23 UTC |
| Date | Sat, 17 Sep 2022 22:21:22 +0100 |
| X-Received-Bytes | 4265 |
| Xref | csiph.com comp.lang.c++:86398 |
Show key headers only | View raw
On Sat, 17 Sep 2022 22:18:34 +0100
Mr Flibble <flibble@reddwarf.jmc.corp> wrote:
> On Sat, 17 Sep 2022 20:52:05 -0000 (UTC)
> Andreas Kempe <kempe@lysator.liu.se> wrote:
>
> > Den 2022-09-17 skrev Bonita Montero <Bonita.Montero@gmail.com>:
> > > Am 17.09.2022 um 16:37 schrieb Andreas Kempe:
> > >> Den 2022-09-17 skrev wij <wyniijj2@gmail.com>:
> > >>> I did not update my C++ understanding (probable since C++11) to
> > >>> find out I cannot understand what the codes are about !!!
> > >>>
> > >>> --- frorm
> > >>> https://groups.google.com/g/comp.lang.c++/c/2ebc6ifoPr4
> > >>> #include <iostream> #include <utility>
> > >>>
> > >>> using namespace std;
> > >>>
> > >>> int main()
> > >>> {
> > >>> auto pow = []<unsigned P>( double b,
> > >>> integral_constant<unsigned,
> > >>> P> ) -> double
> > >>> {
> > >>> auto unroll = [&]<size_t ... Indices>( index_sequence<Indices
> > >>> ...> ) -> double
> > >>> {
> > >>> return ((Indices, b) * ...);
> > >>> };
> > >>> if constexpr( P )
> > >>> return unroll( make_index_sequence<P>() );
> > >>> else
> > >>> return b;
> > >>> };
> > >>> cout << pow( 2.0, integral_constant<unsigned, 10'000>() ) <<
> > >>> endl; }
> > >>> ------
> > >>>
> > >>> Question1: What would the code look like if using C++2006 for
> > >>> the above 'program'?
> > >>
> > >> As was pointed out, you can't really write that code without
> > >> variadic templates. What is does at it's core, if I'm not
> > >> mistaken, is expanding
> > >>
> > >> ((Indices, b) * ...)
> > >>
> > >> to
> > >>
> > >> (0, 2.0) * (1, 2.0) * (2, 2.0) * ... * (9999, 2.0)
> > >>
> > >> using modern template magic. The comma operator makes the first
> > >> index value disappear and we get
> > >>
> > >> 2.0 * 2.0 * 2.0 * ...
> > >>
> > >> 10000 times. Writing something that solves the same problem with
> > >> a loop could be
> > >>
> > >> double result = 1;
> > >> for (size_t i = 0; i < 10000; i++)
> > >> result *= (i, 2.0);
> > >>
> > >>> Question2: What is the good of such way of coding?
> > >>
> > >> I personally don't know. I have still to see an example of a
> > >> variadic template application that I think makes sense and makes
> > >> the code more readable.
> > >
> > > container.emplace*( ... ) is a good example.
> > >
> > >
> >
> > Ah, I didn't really consider emplace.
> >
> > Even though I use it myself and do see the advantage of constructing
> > elements in-place in a container to avoid a move, I'm not too sure I
> > really find it an improvement when it comes to readability.
> > Personally, I find vector.push_back(MyType(arg1, arg2)) clearer when
> > reading code. With emplace, I have to jump to the container
> > declaration to find what type is being put into it.
> >
> > As for the implementation of emplace itself, I can of course not say
> > much regarding variadic templates affecting the readability since I
> > see no way of implementing the function without them.
>
> Not all types can efficiently move (i.e. move is a copy) or they are
> not even copyable ergo the rationale for emplace.
>
> /Flibble
>
To be fair I was talking about containers in general, as far as vector
is concerned the value_type does need to be at least copyable.
/Flibble
Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
What is the good of new way of coding? wij <wyniijj2@gmail.com> - 2022-09-17 05:46 -0700
Re: What is the good of new way of coding? Bonita Montero <Bonita.Montero@gmail.com> - 2022-09-17 15:03 +0200
Re: What is the good of new way of coding? Muttley@dastardlyhq.com - 2022-09-17 14:50 +0000
Re: What is the good of new way of coding? Bonita Montero <Bonita.Montero@gmail.com> - 2022-09-17 17:31 +0200
Re: What is the good of new way of coding? Muttley@dastardlyhq.com - 2022-09-17 15:59 +0000
Re: What is the good of new way of coding? Bonita Montero <Bonita.Montero@gmail.com> - 2022-09-17 18:03 +0200
Re: What is the good of new way of coding? Muttley@dastardlyhq.com - 2022-09-17 16:13 +0000
Re: What is the good of new way of coding? Bonita Montero <Bonita.Montero@gmail.com> - 2022-09-17 18:34 +0200
Re: What is the good of new way of coding? "Alf P. Steinbach" <alf.p.steinbach@gmail.com> - 2022-09-17 19:55 +0200
Re: What is the good of new way of coding? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2022-09-17 12:03 -0700
Re: What is the good of new way of coding? Bonita Montero <Bonita.Montero@gmail.com> - 2022-09-18 16:21 +0200
Re: What is the good of new way of coding? Muttley@dastardlyhq.com - 2022-09-19 08:30 +0000
Re: What is the good of new way of coding? Bonita Montero <Bonita.Montero@gmail.com> - 2022-09-19 10:37 +0200
Re: What is the good of new way of coding? Muttley@dastardlyhq.com - 2022-09-19 08:54 +0000
Re: What is the good of new way of coding? Bonita Montero <Bonita.Montero@gmail.com> - 2022-09-19 11:13 +0200
Re: What is the good of new way of coding? Bonita Montero <Bonita.Montero@gmail.com> - 2022-09-17 15:23 +0200
Re: What is the good of new way of coding? Bonita Montero <Bonita.Montero@gmail.com> - 2022-09-17 15:38 +0200
Re: What is the good of new way of coding? Andreas Kempe <kempe@lysator.liu.se> - 2022-09-17 14:37 +0000
Re: What is the good of new way of coding? Bonita Montero <Bonita.Montero@gmail.com> - 2022-09-17 16:40 +0200
Re: What is the good of new way of coding? Andreas Kempe <kempe@lysator.liu.se> - 2022-09-17 20:52 +0000
Re: What is the good of new way of coding? Mr Flibble <flibble@reddwarf.jmc.corp> - 2022-09-17 22:18 +0100
Re: What is the good of new way of coding? Mr Flibble <flibble@reddwarf.jmc.corp> - 2022-09-17 22:21 +0100
Re: What is the good of new way of coding? Andreas Kempe <kempe@lysator.liu.se> - 2022-09-17 21:31 +0000
Re: What is the good of new way of coding? Muttley@dastardlyhq.com - 2022-09-17 14:52 +0000
Re: What is the good of new way of coding? Bonita Montero <Bonita.Montero@gmail.com> - 2022-09-17 17:32 +0200
csiph-web