| /* { dg-do run } */ | |
| template <typename T> | |
| struct const_ref | |
| { | |
| const T* begin; | |
| const_ref(const T* b) : begin(b) {} | |
| }; | |
| template <typename T> | |
| T sum(const_ref<T> const& a) | |
| { | |
| T result = 0; | |
| for(unsigned i=0;i<1;i++) result += a.begin[i]; | |
| return result; | |
| } | |
| struct tiny_plain | |
| { | |
| int elems[2]; | |
| tiny_plain() { elems[0]=1; } | |
| }; | |
| struct vec3 : tiny_plain {}; | |
| struct mat3 | |
| { | |
| int type() const { return sum(const_ref<int>(vec3().elems)) == 1; } | |
| }; | |
| int main() { return mat3().type() ? 0 : 1; } | |