1f1c66b40213784a1c4612f04c14cafa2b0e89988Richard Smith// RUN: %clang_cc1 -pedantic-errors -std=c++11 -emit-pch %s -o %t 2f1c66b40213784a1c4612f04c14cafa2b0e89988Richard Smith// RUN: %clang_cc1 -pedantic-errors -std=c++11 -include-pch %t -verify %s 3f1c66b40213784a1c4612f04c14cafa2b0e89988Richard Smith 4f1c66b40213784a1c4612f04c14cafa2b0e89988Richard Smith#ifndef HEADER_INCLUDED 5f1c66b40213784a1c4612f04c14cafa2b0e89988Richard Smith 6f1c66b40213784a1c4612f04c14cafa2b0e89988Richard Smith#define HEADER_INCLUDED 7f1c66b40213784a1c4612f04c14cafa2b0e89988Richard Smith 8f1c66b40213784a1c4612f04c14cafa2b0e89988Richard Smithtemplate<typename T> struct S { 9f1c66b40213784a1c4612f04c14cafa2b0e89988Richard Smith enum class E { 1078541c433049322b27b4f437973076ba29cff709Jordan Rose e = T() 11f1c66b40213784a1c4612f04c14cafa2b0e89988Richard Smith }; 12f1c66b40213784a1c4612f04c14cafa2b0e89988Richard Smith}; 13f1c66b40213784a1c4612f04c14cafa2b0e89988Richard Smith 14f1c66b40213784a1c4612f04c14cafa2b0e89988Richard SmithS<int> a; 15f1c66b40213784a1c4612f04c14cafa2b0e89988Richard SmithS<long>::E b; 16f1c66b40213784a1c4612f04c14cafa2b0e89988Richard SmithS<double>::E c; 17f1c66b40213784a1c4612f04c14cafa2b0e89988Richard Smithtemplate struct S<char>; 18f1c66b40213784a1c4612f04c14cafa2b0e89988Richard Smith 19f1c66b40213784a1c4612f04c14cafa2b0e89988Richard Smith#else 20f1c66b40213784a1c4612f04c14cafa2b0e89988Richard Smith 21f1c66b40213784a1c4612f04c14cafa2b0e89988Richard Smithint k1 = (int)S<int>::E::e; 22f1c66b40213784a1c4612f04c14cafa2b0e89988Richard Smithint k2 = (int)decltype(b)::e; 2378541c433049322b27b4f437973076ba29cff709Jordan Roseint k3 = (int)decltype(c)::e; // expected-error@10 {{conversion from 'double' to 'int'}} expected-note {{here}} 24f1c66b40213784a1c4612f04c14cafa2b0e89988Richard Smithint k4 = (int)S<char>::E::e; 25f1c66b40213784a1c4612f04c14cafa2b0e89988Richard Smith 26f1c66b40213784a1c4612f04c14cafa2b0e89988Richard Smith#endif 27