template< class BoundType, class CountType = int >
// BoundType : type for upper/lower bounds/data being bucketed
// CountType : type for counting elements/hits into buckets
struct Bucket {
BoundType LowerBound;
BoundType UpperBound;
CountType Count;
std::string Tag; // Space for extra info
Can anyone shed some light on the problem? I'm fairly certain I've placed a ";" in the correct spot. :)
EDIT: The syntax "A::B" can be resolved in multiple ways. A could be a class/struct type and B a member variable or function; A could be a class/struct type and B another type; A could be a namespace and B could be a function, variable, or type.
The compiler is smart enough to figure out that A is a class/struct type, but not smart enough to realize that B is also a type, so it defaults to thinking B is a member variable. Which means it parses line 163 as
<variable> <variable> ;
which is not valid C++ syntax.
Adding the keyword "typename" tells the compiler that A::B is in fact a type, not a variable.