我知道在C ++中,有一些提供元编程功能的库,比如Boost MPL。 但它们在真实的C ++项目中是否真的有用(或者只是在极少数情况下使用)? (我觉得元编程代码很奇怪,可能会产生难以调试的编译错误)
谢谢。
答案 0 :(得分:2)
当然它很有用。您曾使用过std::distance
或std::advance
吗?他们使用元编程为双向/随机访问迭代器做正确的事情。 (也就是说,重复的++或 - 用于双向迭代器,+ =或 - =用于随机访问迭代器)。
TMP对于需要为类型参数执行一项操作的库或对另一种类型参数执行另一种操作(即距离/前进)非常有用。
你可以用元编程做一些疯狂的事情(例如Boost :: Spirit :: Qi)吗?当然。但这不是一般情况。