我已经阅读了一些关于将在C++14/17中引入的概念的内容。据我所知,我们可以像这样定义和使用概念:
// Define the concept (from wikipedia)
auto concept less_comparable<typename T> {
bool operator<(T);
}
// A class which implements the requirements of less_comparable,
// with T=`const string &`
class mystring
{
bool operator < (const mystring & str) {
// ...
}
};
// Now, a class that requires less_comparable
template <less_comparable T>
class my_sorted_vector
{
// ...
};
// And use my_sorted_vector
my_sorted_vector<int> v1; // should be fine
my_sorted_vector<mystring> v2; // same
my_sorted_vector<struct sockaddr> v3; // must give error?
我的问题是,这个概念在概念上基本上与Java接口相同吗?如果不是,它们有什么不同之处?
谢谢。