#include #include namespace glas { template where std::SameType bool foo( C& c, E const& e ) { return c.size() == e.size() ; } struct bar2 { template where std::SameType bool operator() ( C& c, E const& e ) const { return c.size() == e.size() ; } }; template where std::SameType struct bar { bool operator() ( C& c, E const& e ) const { return c.size() == e.size() ; } }; } struct bar { template where std::EqualityComparable bool operator() ( T const& t1, T const& t2 ) { return t1 == t2 ; } } ; template where std::EqualityComparable struct bar2 { bool operator() ( T const& t1, T const& t2 ) { return t1 == t2 ; } } ; int main() { }