2014-04-07 Charles Baylis <charles.baylis@linaro.org>
[official-gcc.git] / gcc / testsuite / g++.dg / torture / pr49628.C
blob4bc6543a35e324b1ee7ca33e3a5d39e8755e136c
1 /* { dg-do compile } */
3 #include <vector>
5 template <int rank, int dim> class Tensor;
6 template <int dim> class Tensor<1,dim> {
7 public:
8     explicit Tensor (const bool initialize = true);
9     Tensor (const Tensor<1,dim> &);
10     Tensor<1,dim> & operator = (const Tensor<1,dim> &);
11     double values[(dim!=0) ? (dim) : 1];
13 template <int dim>
14 inline Tensor<1,dim> & Tensor<1,dim>::operator = (const Tensor<1,dim> &p)
16   for (unsigned int i=0; i<dim; ++i)
17     values[i] = p.values[i];
19 template <int dim> class Quadrature {
20 public:
21     const unsigned int n_quadrature_points;
23 class MappingQ1
25   class InternalData  {
26   public:
27       std::vector<Tensor<1,3> > shape_derivatives;
28       unsigned int n_shape_functions;
29   };
30   void compute_data (const Quadrature<3> &quadrature, InternalData &data)
31       const;
33 void MappingQ1::compute_data (const Quadrature<3> &q, InternalData &data) const
35   const unsigned int n_q_points = q.n_quadrature_points;
36   data.shape_derivatives.resize(data.n_shape_functions * n_q_points);