用什么来替代C中的概念(即将推出的功能)?
你可能听说过C中的概念.这是一个功能
允许您指定模板中类型的要求.
我正在寻找一种方法来做到这一点,我找到的最好的是
Stroustrup的书中他将谓词与static_assert一起使用,如下所示:
template<typename Iter,typename Val> Iter find(Iter b,Iter e,Val x) { static_assert(Input_iterator<Iter>(),"find(): Iter is not a Forward iterator"); // Rest of code... }
解决方法
好吧,有几次我需要类似概念的功能,我转向
Boost Concept Check.它不是最漂亮的库,但它似乎已经内置了很多东西.
我使用你的方法的唯一问题是需要编写所有特征类.我没有广泛使用它,但可能已经为Boost做了很多常见的事情.