Files
llvm-project/clang/test/SemaTemplate/instantiate-enum.cpp
Peter Collingbourne fa1d4e1067 Do not add enums to prototype scope in C++ modes.
The language forbids defining enums in prototypes, so this check is normally
redundant, but if an enum is defined during template instantiation it should
not be added to the prototype scope.

While at it, clean up the code that deals with tag definitions in prototype
scope and expand the visibility warning to cover the case where an anonymous
enum is defined.

Differential Revision: http://llvm-reviews.chandlerc.com/D2742

llvm-svn: 201927
2014-02-22 03:05:49 +00:00

43 lines
563 B
C++

// RUN: %clang_cc1 -fsyntax-only %s
template<typename T, T I, int J>
struct adder {
enum {
value = I + J,
value2
};
};
int array1[adder<long, 3, 4>::value == 7? 1 : -1];
namespace PR6375 {
template<typename T>
void f() {
enum Enum
{
enumerator1 = 0xFFFFFFF,
enumerator2 = enumerator1 - 1
};
int xb1 = enumerator1;
int xe1 = enumerator2;
}
template void f<int>();
}
namespace EnumScoping {
template <typename T>
class C {
enum {
value = 42
};
};
void f(int i, C<int>::C c) {
int value;
}
}