[STL]
Hmm. VC rejects this code:
C:\Temp>type purr.cpp template <typename T> struct NoCharsAllowed { static_assert(sizeof(T) > 1, "No chars allowed!"); };
template <typename A> void purr(int, const A&);
template
typename NoCharsAllowed<B>::type purr(void *, const B&, Types...); int main() { purr(1729, 'x'); }
C:\Temp>cl /EHsc /nologo /W4 /c purr.cpp purr.cpp purr.cpp(2) : error C2338: No chars allowed! purr.cpp(10) : see reference to class template instantiation 'NoCharsAllowed<char>' being compiled
However, GCC accepts it, contrary to my understanding of the Standard.
More curiously (according to our compiler team; I haven't run clang myself): VC 2013: static_assert GCC 4.8.1: accepts EDG 4.6: accepts clang 3.3: static_assert STL