假设你有一个带有参数类的模板
template <typename ConnectorClass>
struct myClass {
}
我想添加一个BOOST_ASSERT_MSG
来验证ConnectorClass
实现某种签名方法
returnType MethodName(param1, param2)
在这种情况下我应该如何编写断言条件?
编辑:由于这个问题似乎没有一个明确的解决方案,我发布了一个基于答案的一些参考的带有中间结果的子问题,请按照这里
假设你有一个带有参数类的模板
template <typename ConnectorClass>
struct myClass {
}
我想添加一个BOOST_ASSERT_MSG
来验证ConnectorClass
实现某种签名方法
returnType MethodName(param1, param2)
在这种情况下我应该如何编写断言条件?
编辑:由于这个问题似乎没有一个明确的解决方案,我发布了一个基于答案的一些参考的带有中间结果的子问题,请按照这里
你不能。BOOST_ASSERT_MSG 在运行时进行评估。如果该类没有该成员,那么无论您的模板需要什么,您都会收到编译错误。
如果您的目标是更好的错误消息,请查看 Boost 的概念检查库。如果您的目标是让您的模板根据可用的成员执行不同的操作,请查看 Boost 的enable_if
.
如果您在 Windows 上,并且不太挑剔,您可以通过__if_exists 执行此操作,这是 Visual C++ 的 hack 扩展