在C++中,可以防止使用= delete语法在T上使用函数。不能使用不完整类型调用sizeof。
但是,我想知道,是否有一种方法可以防止sizeof被用于一个完整的类型?
我最初的尝试是这样的:
size_t operator sizeof(T) = delete;显然不起作用。
现在,从网上的研究中,我找不到任何迹象表明可以防止sizeof被用于一种类型,除非该类型是不完整的。
那么,是否有任何方法可以防止sizeof操作符与类一起使用(使用= delete语法或其他方式),从而导致编译时错误?
任何事情都是值得赞赏的,不管它有多烦琐,而且一个大多数时候起作用的解决方案也是很好的。不过,C++14是兼容的,没有外部库。
发布于 2021-08-30 18:46:45
不太可能。sizeof不是一个函数,它是一个内置的操作符。由于对new的正确行为(为某些对象分配内存大小)来说是必要的,我看不出您如何删除它。
但是,如果目标是隐藏实现大小,您可以添加一些间接层,并将实际类型隐藏在固定大小的外观后面,但这并不是一个零成本抽象。
https://stackoverflow.com/questions/68988934
复制相似问题