We use template specialization for some type parameter like
class my_template_class<uint64_t M>: public my_template_class_base<uint64_t> {
....
}
class my_template_class<unsigned long long,M>: public my_template_class_base<unsigned long long> {
....
}
This is working perfectly with 64-bit compilation with gcc. While when we try the 32 bit mode, it reports "previous definition" for above two classes.
So unsigned long long is the same as uint64_t in the 32-bit compilation but not in 64-bit compliation?
The compilation difference is the CXX flag -m32 and -m64