假设您有一个采用参数类
的模板template <typename ConnectorClass>
struct myClass {
}
我想添加BOOST_ASSERT_MSG
来验证ConnectorClass
是否实现了某种签名方法
returnType MethodName(param1, param2)
在这种情况下我应该怎么写断言条件?
编辑:由于这个问题似乎没有一个明确的解决方案,我发布了一个子问题,基于对答案的一些参考文献的中间结果 请关注here答案 0 :(得分:2)
你做不到。在运行时期间评估BOOST_ASSERT_MSG。如果该类没有该成员,则无论模板在何处预期,您都会收到编译错误。
如果您的目标是更好的错误消息,请查看Boost的概念检查库。如果您的目标是让您的模板根据可用的成员执行不同的操作,请查看Boost的enable_if
。
答案 1 :(得分:0)
如果您使用的是Windows,并且不太挑剔,可以通过__if_exists, a hack extension to Visual C++
执行此操作答案 2 :(得分:0)