File: variadic160.C

package info (click to toggle)
gcc-arm-none-eabi 15%3A14.2.rel1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,099,328 kB
  • sloc: cpp: 3,627,108; ansic: 2,571,498; ada: 834,230; f90: 235,082; makefile: 79,231; asm: 74,984; xml: 51,692; exp: 39,736; sh: 33,298; objc: 15,629; python: 15,069; fortran: 14,429; pascal: 7,003; awk: 5,070; perl: 3,106; ml: 285; lisp: 253; lex: 204; haskell: 135
file content (49 lines) | stat: -rw-r--r-- 1,402 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// PR c++/61539
// { dg-do compile { target c++11 } }

template <typename _CharT> class A;
template <typename> class B;
template <class charT> class C;
template <> class C<char>
{
  virtual void xparse (int &, const B<A<char> > &) const;
};
template <class T, class charT = char> class G : C<charT>
{
public:
  G (void *) {}
  void default_value (const T &);
  void xparse (int &, const B<A<charT> > &) const;
};
template <class T, class charT>
void validate (int &, const B<A<charT> > &, T *, int);
template <class T, class charT>
void G<T, charT>::xparse (int &p1, const B<A<charT> > &p2) const
{
  validate (p1, p2, (T *)0, 0);
}
template <class T> G<T> *value (T *) { return new G<T>(0); }
namespace Eigen
{
template <typename T> struct D;
template <typename, int, int, int = 0, int = 0, int = 0 > class F;
template <typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows,
          int _MaxCols>
struct D<F<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> >
{
  typedef _Scalar Scalar;
};
template <typename, int, int, int, int, int _MaxCols> class F
{
public:
  typedef typename Eigen::D<F>::Scalar Scalar;
  F (const Scalar &, const Scalar &, const Scalar &);
};
template <class... T>
void validate (int &, const B<A<char> > &, Eigen::F<T...> *);
}
int main (int, char *[])
{
  Eigen::F<double, 3, 1> a (0, 0, 0);
  value (&a)->default_value (Eigen::F<double, 3, 1>(0, 0, 0));
}