Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c++ > #68277

Re: Template argument deduction mystery

From Ian Collins <ian-news@hotmail.com>
Newsgroups comp.lang.c++
Subject Re: Template argument deduction mystery
Date 2019-09-08 12:29 +1200
Message-ID <gtj0bpFnafoU5@mid.individual.net> (permalink)
References (4 earlier) <20190906145510.4c03182d29e071b060cb8ad9@cvine--nospam--.freeserve.co.uk> <OTFcF.511763$tG2.425205@fx48.iad> <20190907152518.13d08d857bf2360dcd972522@cvine--nospam--.freeserve.co.uk> <ql0ufs$1pup$1@adenine.netfront.net> <gtiemvFoelvU1@mid.individual.net>

Show all headers | View raw


On 08/09/2019 07:28, Bo Persson wrote:
> On 2019-09-07 at 20:55, Juha Nieminen wrote:
>> Chris Vine <chris@cvine--nospam--.freeserve.co.uk> wrote:
>>> As I read it, he asked about the specialization of std::greater<void>
>>> which allows type deduction in its call operator.  That was made
>>> available in C++14.
>>
>> I was, in fact, asking about both things.
>>
>> It was completely mysterious to me how exactly std::greater would
>> know that it was supposed to be comparing doubles, when nowhere in
>> its instantiation it's told that. I didn't know that it has a
>> specialization for void that works for exactly this kind of situation.
>>
>> It's also a bit unclear to me how it works without the empty <>
>> brackets. I know it's related to C++ automatic template type
>> deduction, but it's unclear to me how it works in this case.
>> Curiously, it appears that it works without any explicit deduction
>> guides. It works for the mere reason that the default template
>> parameter for std::greater is void.
>>
>> The rules of automatic template parameter type deduction are still
>> a bit unclear to me.
>>
> 
> The possiblity of omitting an empty <> is just mentioned in passing,
> while decribing "Explicit template argument specification":
> 
> "Trailing template arguments that can be deduced or obtained from
> default template-arguments may be omitted from the list of explicit
> template-arguments. A trailing template parameter pack ([temp.variadic])
> not otherwise deduced will be deduced as an empty sequence of template
> arguments. If all of the template arguments can be deduced, they may all
> be omitted; in this case, **the empty template argument list <> itself
> may also be omitted.**"
> 
> http://eel.is/c++draft/temp.arg.explicit#4
> 
> 
> Not obvious at all, if you happened to skip over the last part of this
> sentence.  :-)

Thanks for filling in the gaps and the link!

I glad I'm not a compiler writer...  gcc-9 gets it right, gcc-8 gets it 
wrong.

-- 
Ian.

Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Template argument deduction mystery Juha Nieminen <nospam@thanks.invalid> - 2019-09-04 13:55 +0000
  Re: Template argument deduction mystery Ian Collins <ian-news@hotmail.com> - 2019-09-05 07:16 +1200
  Re: Template argument deduction mystery Bonita Montero <Bonita.Montero@gmail.com> - 2019-09-05 03:03 +0200
    Re: Template argument deduction mystery Juha Nieminen <nospam@thanks.invalid> - 2019-09-05 21:50 +0000
      Re: Template argument deduction mystery Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2019-09-05 20:04 -0400
        Re: Template argument deduction mystery Chris Vine <chris@cvine--nospam--.freeserve.co.uk> - 2019-09-06 14:55 +0100
          Re: Template argument deduction mystery Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2019-09-06 23:56 -0400
            Re: Template argument deduction mystery Chris Vine <chris@cvine--nospam--.freeserve.co.uk> - 2019-09-07 15:25 +0100
              Re: Template argument deduction mystery Juha Nieminen <nospam@thanks.invalid> - 2019-09-07 18:55 +0000
                Re: Template argument deduction mystery Bo Persson <bo@bo-persson.se> - 2019-09-07 21:28 +0200
                Re: Template argument deduction mystery Ian Collins <ian-news@hotmail.com> - 2019-09-08 12:29 +1200
                Re: Template argument deduction mystery Chris Vine <chris@cvine--nospam--.freeserve.co.uk> - 2019-09-07 23:06 +0100
              Re: Template argument deduction mystery Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2019-09-07 18:35 -0400

csiph-web