This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: SFINAE question 2


On 08/22/2012 11:01 PM, Jonathan Wakely wrote:
template<typename T>
struct HasRandomAccessOp {
     typedef decltype(std::declval<T>()[0]) test_type;
};

template<typename T, typename T_VECTOR,
          typename = typename HasRandomAccessOp<T_VECTOR>::test_type>
int operator*(const T &l, const T_VECTOR &r) {
     return 1;
}
Hi Jonathan,

yes, this works as expected ;-)

I wonder whether it is possible to overload the operator*() to have two versions:
- one for all T_VECTOR - types having operator[]
- one for all T_VECTOR - types not having operator[] but providing say a forward iterator, like std::list


(This is just a toy requirement, I am aware that one can implement this in other ways too...)

You see I am painfully missing some C++11 concepts functionality here...

Cheers,
onay


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]