Сегодня я столкнулся со странной ошибкой компиляции в офисе и подозреваю, что это ошибка в нашей версии GCC (3.4.6).Я был в состоянии свести это к нескольким строкам кода (ниже).Я получаю ошибку компиляции:
test.cpp:26: error: expected primary-expression before '>' token
test.cpp:26: error: expected primary-expression before ')' token
Эту ошибку можно избежать, введя временную переменную для хранения результата первого оператора (bar.value("yoyo")
).Может кто-нибудь сказать мне, что вызывает это?Это ошибка в GCC 3.4.6 (кажется, что она работает в GCC 4.xx) и есть ли другие подобные ошибки, связанные с шаблонами, в этой версии?
class Foo
{
public:
template<typename T> bool doIt() const { return true; }
};
class Bar
{
public:
Foo value(const char * key)
{
return Foo();
}
};
template<typename T>
void
mytestfunc()
{
Bar bar;
// Works fine:
Foo foo = bar.value("yoyo");
foo.doIt<T>();
// Does not work on gcc 3.4.6:
bar.value("yoyo").doIt<T>();
}
int main(int argc, char * args[])
{
return 0;
}