我如何在 C++
中要求并检查一个参数是否是某个概念?
例如,algorithm
header 中的random_shuffle
函数要求其参数为RandomAccessIterators。 :
template<typename _RandomAccessIterator>
inline void
random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last)
{
// concept requirements
__glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
_RandomAccessIterator>)
__glibcxx_requires_valid_range(__first, __last);
if (__first != __last)
for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i)
std::iter_swap(__i, __first + (std::rand() % ((__i - __first) + 1)));
}
我想我不能在我自己的代码中使用这些 __glibcxx_function_requires
等?它们是如何工作的?您是否在代码中检查类似的内容?
最佳答案
Boost 有一个用于此的库。这可能比弄清楚如何使用您的 STL 实现者一起破解的版本更容易,也有更好的文档记录。
http://www.boost.org/doc/libs/1_40_0/libs/concept_check/concept_check.htm
关于c++ - 如何在 C++ 代码中要求某些概念?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1484462/