Problem with templates
{ Reformatted; please limit your lines to 70 chars -mod }
Hi,
I have a strange problem with templates in c++. I need to access a
singleton with template methods inside another templated class. The
problem is isolated in the following piece of code, which doesn?t
compile. For example, in gcc 4.7.3 you will get
?test.cpp:15:23: error: expected primary-expression before 'int'?,
which did not help me to identify the root of the problem. It will
compile if I remove any of the two templates, but I want both
templates. The code will also compile if I remove the bar() function
and replace it with ?a? directly. My problem is that I cannot see why
the bar() function is a problem here.
Any ideas? What exactly is the problem in the example below?
class A {
public:
template<typename T>
T get() { return 0; }
};
static A a;
template<typename U>
class B {
public:
static A& bar() { return a; }
static int foo() {
int x = bar().get<int>(); // This doesn?t compile.
// Replace with ?int x = a.get<int>();? will do the trick.
return x;
}
};
int
main(int argc, char * argv[]) {
B<double>::foo();
return 0;
}
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]