public inbox for gcc-help@gcc.gnu.org
 help / color / mirror / Atom feed
* C++11 - Parameter pack question
@ 2014-08-16  1:14 Sidney Marshall
  0 siblings, 0 replies; 5+ messages in thread
From: Sidney Marshall @ 2014-08-16  1:14 UTC (permalink / raw)
  To: gcc-help; +Cc: sidneym

Hello,

The following code compiles and runs correctly but gives a warning:

----------------------------------------
#include<iostream>

using namespace std;

template<class T>
T sum(T value) {
   return value;
}

template<class T, class ... U>
auto sum(T value, U ... values) {
     return value + sum(values ...);
}

int main() {
   cout << sum(1, 2, 4.6) << endl;
   cout << sum(1, "abcde", 2) << endl;
}
--------------------------------------

$ g++ -std=c++11 pack.cpp
pack.cpp:11:31: warning: ‘sum’ function uses 
‘auto’ type specifier without trailing return type [enabled by default]
  auto sum(T value, U ... values) {

$ ./a.exe
7.6
de
-------------------------------------------

All of my attempts to use a trailing return type 
failed (and I believe should have failed according to the standard).

My two questions:

1. What possible user mistake is the warning worried about?

2. How can I write my code with better style so that there is no warning?

Thank you.

--Sidney Marshall

^ permalink raw reply	[flat|nested] 5+ messages in thread
* C++11 - Parameter pack question
@ 2014-08-16  1:14 Sidney Marshall
  0 siblings, 0 replies; 5+ messages in thread
From: Sidney Marshall @ 2014-08-16  1:14 UTC (permalink / raw)
  To: gcc-help; +Cc: sidneym

Hello,

The following code compiles and runs correctly but gives a warning:

----------------------------------------
#include<iostream>

using namespace std;

template<class T>
T sum(T value) {
   return value;
}

template<class T, class ... U>
auto sum(T value, U ... values) {
     return value + sum(values ...);
}

int main() {
   cout << sum(1, 2, 4.6) << endl;
   cout << sum(1, "abcde", 2) << endl;
}
--------------------------------------

$ g++ -std=c++11 pack.cpp
pack.cpp:11:31: warning: ‘sum’ function uses 
‘auto’ type specifier without trailing return type [enabled by default]
  auto sum(T value, U ... values) {

$ ./a.exe
7.6
de
-------------------------------------------

All of my attempts to use a trailing return type 
failed (and I believe should have failed according to the standard).

My two questions:

1. What possible user mistake is the warning worried about?

2. How can I write my code with better style so that there is no warning?

Thank you.

--Sidney Marshall

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2014-08-17  2:28 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <201408160114.s7G1EKDO087976@nef2.ens.fr>
2014-08-16  7:12 ` C++11 - Parameter pack question Marc Glisse
     [not found]   ` <alpine.DEB.2.11.1408160907210.1729@laptop-mg.saclay.inria. fr>
2014-08-17  2:28     ` Sidney Marshall
2014-08-17  2:28     ` Sidney Marshall
2014-08-16  1:14 Sidney Marshall
  -- strict thread matches above, loose matches on Subject: below --
2014-08-16  1:14 Sidney Marshall

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).