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