用什么来替代C++中的概念(即将推出的特性)?

use*_*311 7 c++ c++11 c++-concepts

用什么来替代C++中的概念(即将推出的特性)?

您可能听说过C++中的概念.该功能允许您指定模板中类型的要求.

我正在寻找一种方法来实现这一点,我找到的最好的是在Stroustrup的书中,他将谓词与static_assert一起使用,如下所示:

template<typename Iter, typename Val>
Iter ?nd(Iter b, Iter e, Val x) 
{
    static_assert(Input_iterator<Iter>(),"?nd(): Iter is not a Forward iterator");

    // Rest of code...
}
Run Code Online (Sandbox Code Playgroud)

如果你使用其他方法或者这个方法有问题,请告诉我.

Kit*_*YMG 1

好吧,有几次我需要类似概念的功能,我转向了Boost Concept Check。它不是最漂亮的库,但它似乎已经内置了很多东西。

我使用你的方法时遇到的唯一问题是需要编写所有特征类。我没有广泛使用它,但想必 Boost 已经为您完成了很多常见的事情。