|
Boost Users : |
Subject: Re: [Boost-users] [ConceptCheck] Same type concept
From: Robert Ramey (ramey_at_[hidden])
Date: 2014-08-25 12:18:08
the obvious thing you're missing is that a "Concept" is just a glorified name
for some static asserts.
So you can get what you want by using
template<typename T, typename U>
struct my_class {
static_assert(std::is_same<T, U>::value, "Types differ!");
....
};
template<typename T, typename U>
int x(T &t; U& u){
static_assert(std::is_same<T, U>::value, "Types differ!");
... code here
}
If you want to make an "official looking" concept you can
look at boost concept library which describes how to do this. The
short version is
template<typename T, typename U>
struct MyConcept {
static_assert(std::is_same<T, U>::value, "Types differ!");
... all the other type requirements
};
Then you could change my class to look like
template<typename T, typename U>
struct my_class : public MyConcept<T, U> {
....
};
template<typename T, typename U>
int x(T &t; U& u){
typedef MyConcept<T, U> concept_check;
... code here
}
Take a look at the Boost concept library which explains all this better.
Robert Ramey
-- View this message in context: http://boost.2283326.n4.nabble.com/ConceptCheck-Same-type-concept-tp4666862p4666900.html Sent from the Boost - Users mailing list archive at Nabble.com.
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net