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


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

Re: Template argument determination

Newsgroups comp.lang.c++
From "A. Bolmarcich" <aggedor@earl-grey.cloud9.net>
Subject Re: Template argument determination
References <irh227$8du$1@dont-email.me> <slrnitob96.77f.aggedor@earl-grey.cloud9.net> <irhqjn$cjf$2@reader1.panix.com>
Message-ID <slrnitqfos.10rf.aggedor@earl-grey.cloud9.net> (permalink)
Date 2011-05-25 12:40 -0500

Show all headers | View raw


On 2011-05-25, Ruben Safir <ruben@mrbrklyn.com> wrote:
> On Tue, 24 May 2011 17:11:50 -0500, A. Bolmarcich wrote:
>
>
>>> And then explain.  Then change the line in 'main' to
>>>
>>>       foo<int>(42);
>>>
>>> and try again.  And if the results are different, try to explain why
>>> they are.
>> 
>> For original program with foo(42), the template for foo is not
>> instantiated because the compiler is not able to deduce the template
>> argument to use for T.
>
>
> I know this is going to sound ignorant, but why can't it.  There is one 
> type for the argument, int.  There is one type that the function is 
> supposed to take in, a struct<T>.  There aren't any choice but to either 
> fail for install the int into an implicit constructor if one is available.

That is not the choice that C++ uses.  If function template arguments
are explicitly specified or can be deduced, the function template is
instantiated, and, ignoring overloaded functions, that function is
the one that is called.  Otherwise (function templates are not
instantiated), the call is to a non-template function, such as one
declared by

  void foo(int)

If that function is not declared but

  void foo(X)

is and an int can be implicitly converted to a X, then the expression
foo(42) calls foo(X).
~

Back to comp.lang.c++ | Previous | NextPrevious in thread | Find similar


Thread

Template argument determination Ruben Safir <ruben@mrbrklyn.com> - 2011-05-23 20:31 +0000
  Re: Template argument determination Ruben Safir <ruben@mrbrklyn.com> - 2011-05-24 02:50 +0000
    Re: Template argument determination Michael Doubez <michael.doubez@free.fr> - 2011-05-24 03:48 -0700
    Re: Template argument determination "Balog Pal" <pasa@lib.hu> - 2011-05-24 13:06 +0200
      Re: Template argument determination Ruben Safir <ruben@mrbrklyn.com> - 2011-05-24 14:44 +0000
        Re: Template argument determination Ruben Safir <ruben@mrbrklyn.com> - 2011-05-24 15:04 +0000
          Re: Template argument determination "Balog Pal" <pasa@lib.hu> - 2011-05-24 17:33 +0200
          Re: Template argument determination Victor Bazarov <v.bazarov@comcast.invalid> - 2011-05-24 11:43 -0400
  Re: Template argument determination "A. Bolmarcich" <aggedor@earl-grey.cloud9.net> - 2011-05-24 12:32 -0500
    Re: Template argument determination Ruben Safir <ruben@mrbrklyn.com> - 2011-05-24 18:08 +0000
      Re: Template argument determination "A. Bolmarcich" <aggedor@earl-grey.cloud9.net> - 2011-05-24 14:32 -0500
        Re: Template argument determination Victor Bazarov <v.bazarov@comcast.invalid> - 2011-05-24 15:48 -0400
          Re: Template argument determination "A. Bolmarcich" <aggedor@earl-grey.cloud9.net> - 2011-05-24 17:11 -0500
            Re: Template argument determination Victor Bazarov <v.bazarov@comcast.invalid> - 2011-05-24 19:04 -0400
              Re: Template argument determination "A. Bolmarcich" <aggedor@earl-grey.cloud9.net> - 2011-05-25 12:37 -0500
                Re: Template argument determination Ruben Safir <ruben@mrbrklyn.com> - 2011-05-26 16:12 +0000
                Re: Template argument determination "A. Bolmarcich" <aggedor@earl-grey.cloud9.net> - 2011-05-26 13:25 -0500
            Re: Template argument determination Ruben Safir <ruben@mrbrklyn.com> - 2011-05-25 02:47 +0000
              Re: Template argument determination "Balog Pal" <pasa@lib.hu> - 2011-05-25 10:06 +0200
              Re: Template argument determination "A. Bolmarcich" <aggedor@earl-grey.cloud9.net> - 2011-05-25 12:40 -0500

csiph-web