Hi,
the following code fails to compile under MinGW (GCC 4) as well as Ubuntu Linux
(GCC 4) although it is syntactically correct:
template <bool respectFiltering>
class DetectChanges
{
public:
template <int side>
void detectFileChange() const {}
};
class RedetermineAuto
{
public:
RedetermineAuto()
{
execute(DetectChanges<false>());
}
private:
template <bool dbLeftFilterActive>
static void execute(DetectChanges<dbLeftFilterActive> dbLeft)
{
dbLeft.detectFileChange<3>();
}
};
int main()
{
return 0;
}
Compiler messages:
C:\Programme\C++\Projects\test\main.cpp|25|error: expected primary-expression
before ')' token|
C:\Programme\C++\Projects\test\main.cpp|18|instantiated from here|
C:\Programme\C++\Projects\test\main.cpp|25|error: invalid operands of types
'<unresolved overloaded function type>' and 'int' to binary 'operator<'|
||=== Build finished: 2 errors, 0 warnings ===|
If the unrelated statement "template <int> void detectFileChange();" is
inserted at the top, the code compiles which is very strange.
Regards, ZenJu
--
Summary: Compilation error with member templates
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: major
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: zhnmju123 at gmx dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41614