此问题的通常答案是标准C ++十进制类型具有与-force
相同的功能。
这不是事实。尽管decltype仅可以接受表达式作为参数,__typeof__
也可以接受类型名称。
尽管这看起来很奇怪,但我有一个真实的用例,我需要将使用该扩展程序未编写的内容从平台移植到不使用该扩展程序的平台上。表达式和类型都通过宏传递,因此重写的版本必须接受两者。
简化的示例伪代码:
__typeof__
问题不是关于周围应用程序的设计,而是关于在GCC中的实现所给出的规范内模拟__typeof__扩展。
尽管用例比__typeof__的完整规范要窄一些。如果它与字符串文字一起使用,则代替所有常规表达式就足够了。在进行模板和/或SFINAE尝试时,这样做并不容易。
当然,出于内部目的,我可以为字符串文字编写MYMACROA,为类型编写MYMACROB,我一点也不介意。但是它没有使用__typeof__扩展名的原始解决方案的用户体验。这就是为什么我对此感兴趣的原因。