我的 C++11 代码无法编译,因为重载函数被重新定义为与参数相同的类型:
char const* foo(uint64_t) { return "%" PRIu64; }
char const* foo(unsigned long long int) { return "%llu"; }
是否可以添加一个编译器宏来检查这两个原语之间的相等性,然后在编译之前切除第二个(如果相等)?
还有其他函数可以返回其他类型的字符指针。例如,添加它不会给我带来任何麻烦,即使 asigned
和 anunsigned long long int
使用相同的字节数:
char const* foo(long long int) { return "%lld"; }
所以检查一个类型使用了多少内存似乎是不够的。还有哪些其他方法?