Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/template/dr408.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
// DR 408 // { dg-do link } // Test that a size given in the out-of-class definition isn't used until // instantiation time. template<typename T> struct X { static char s[]; int c; }; template<typename T> char X<T>::s[sizeof(X<T>)]; #define sassert(EXP) int ar[(EXP)?1:-1] sassert(sizeof (X<char>::s) == sizeof (int)); // Test that a specialization can have a different size. template <int> void g(); template <> void g<2>() { } template <typename T> struct S { static int i[]; void f(); }; template <typename T> int S<T>::i[] = { 1 }; template <typename T> void S<T>::f() { g<sizeof (i) / sizeof (int)>(); } template <> int S<int>::i[] = { 1, 2 }; int main() { S<int> s; s.f(); }