| #version 400 core |
| |
| in double d; // ERROR, no doubles |
| in dvec3 d3; // ERROR, no doubles |
| in dmat4 dm4; // ERROR, no doubles |
| |
| // function selection under type conversion |
| void foo1(double a, uint b) {}
|
| void foo1(double a, int b) {}
|
| void foo1(double a, float b) {}
|
| void foo1(double a, double b){}
|
|
|
| void foo2(double a, float b) {}
|
| void foo2(double a, double b){}
|
|
|
| void foo3(double a, float b) {}
|
| void foo3(float a, double b) {}
|
|
|
| void ftd( int, float, double) {}
|
| void ftd( uint, float, double) {}
|
| void ftd(float, double, double) {}
|
|
|
| void main()
|
| {
|
| double d;
|
| uint u;
|
| int i;
|
| float f;
|
|
|
| foo1(d, d);
|
| foo1(d, u);
|
| foo1(d, i);
|
| foo1(d, f);
|
|
|
| foo1(f, d);
|
| foo1(f, u);
|
| foo1(f, i);
|
| foo1(f, f);
|
|
|
| foo1(u, d);
|
| foo1(u, u);
|
| foo1(u, i);
|
| foo1(u, f);
|
|
|
| foo1(i, d);
|
| foo1(i, u);
|
| foo1(i, i);
|
| foo1(i, f);
|
|
|
| foo2(d, d);
|
| foo2(d, u);
|
| foo2(d, i);
|
| foo2(d, f);
|
|
|
| foo2(f, d);
|
| foo2(f, u);
|
| foo2(f, i);
|
| foo2(f, f);
|
|
|
| foo2(u, d);
|
| foo2(u, u);
|
| foo2(u, i);
|
| foo2(u, f);
|
|
|
| foo2(i, d);
|
| foo2(i, u);
|
| foo2(i, i);
|
| foo2(i, f);
|
|
|
| foo3(d, d); // ERROR, no match
|
| foo3(d, u);
|
| foo3(d, i);
|
| foo3(d, f);
|
|
|
| foo3(f, d);
|
| foo3(f, u); // ERROR, ambiguous
|
| foo3(f, i); // ERROR, ambiguous
|
| foo3(f, f); // ERROR, ambiguous
|
|
|
| foo3(u, d);
|
| foo3(u, u); // ERROR, ambiguous
|
| foo3(u, i); // ERROR, ambiguous
|
| foo3(u, f); // ERROR, ambiguous
|
|
|
| foo3(i, d);
|
| foo3(i, u); // ERROR, ambiguous
|
| foo3(i, i); // ERROR, ambiguous
|
| foo3(i, f); // ERROR, ambiguous
|
|
|
| ftd(i, f, f);
|
| ftd(u, f, f);
|
| } |
| |
| void itf(int, float, int); |
| void itf(int, double, int); |
| |
| void tf() |
| { |
| double d;
|
| uint u;
|
| int i;
|
| float f;
|
| |
| itf(i, i, i); |
| itf(i, u, i); |
| } |