aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/g++.dg/template/nontype12.C
blob: b4bb41d109b42af9f78ada63a54c5a2c761213a9 (plain)
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
// PR c++/20172
// Origin: Volker Reichelt <reichelt@igpm.rwth-aachen.de>

template<typename T> struct A
{
  template<T> int foo();                        // { dg-error "double" }
  template<template<T> class> int bar();        // { dg-error "double" }
  template<T> struct X;                         // { dg-error "double" }
};

A<char>   a1;
A<double> a2;                                   // { dg-message "required" }

template<typename T> struct B
{
  template<double> int foo();                   // { dg-error "double" }
  template<template<double> class> int bar();   // { dg-error "double" }
  template<double> struct X;                    // { dg-error "double" }
};

template<void> int foo();                       // { dg-error "void" }
template<template<void> class> int bar();       // { dg-error "void" }
template<void> struct X;                        // { dg-error "void" }

template<typename T> struct C
{
  template<T> int foo();                        // { dg-error "double" }
};

template<typename T> int baz(T) { C<T> c; }     // { dg-message "required" }

void foobar()
{
  baz(1.2);                                     // { dg-message "required" }
}