I realize this error is usually due to some syntax or type issues but I am not sure how to solve this problem. I think it may do with the type of findRt.
vector<triangle> findRightTriangles(unsigned long l, unsigned long h) {
<triangle> retval; // storage for return value.
triangle t;    
double what;
for(t.s1 = 3; t.s1 <= h; t.s1++) {
    for(t.s2 = t.s1; t.s2 <= h; t.s2++) {
        what = sqrt((t.s1*t.s1) + (t.s2*t.s2));
        t.s3 = static_cast<unsigned int>(what);
        if(((t.s1*t.s1)+(t.s2*t.s2)) != (t.s3*t.s3) 
            || t.s1+t.s2+t.s3 < l 
                || t.s1+t.s2+t.s3 > h) {
            continue;
        }
        else if(t.s1+t.s2+t.s3 <= h 
            && t.s1+t.s2+t.s3 >= l 
                && t.s1+t.s2 > t.s3 
                    && ((t.s1*t.s1)+(t.s2*t.s2)) == (t.s3*t.s3)) {
            retval.push_back(t);
        }
    }
}
return retval;
}
int main(){
unsigned long min, max;
cin >> min >> max;
    //Here is the problem:
cout << findRightTriangles(min, max) << endl;
return 0;
}
How to output the vector using cout?
 
     
     
     
     
     
    