On Jan 23, 2012, at 3:38 AM, Jonathan Sauer wrote: > Hello, > > a bit late, but ... > >> Modified: libcxx/trunk/include/algorithm >> URL: >> http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/algorithm?rev=145624&r1=145623&r2=145624&view=diff >> ============================================================================== >> --- libcxx/trunk/include/algorithm (original) >> +++ libcxx/trunk/include/algorithm Thu Dec 1 14:21:04 2011 >> @@ -2678,8 +2712,8 @@ >> >> result_type operator()(); >> >> - static const/*expr*/ result_type min() {return _Min;} >> - static const/*expr*/ result_type max() {return _Max;} >> + static constexpr result_type min() {return _Min;} >> + static constexpr result_type max() {return _Max;} >> >> friend __rs_default __rs_get(); >> }; > > When compiling with clang's preliminary support for constexpr, this results > in a compile-time error, as the > class has non-constexpr constructors and a destructor, both of which make the > class non-literal, meaning it > cannot have constexpr methods (FDIS 7.15p8 and 3.9p10). > > 7.15p8: > | A constexpr specifier for a non-static member function [...]. The class of > which that function is a member > | shall be a literal type (3.9) > > 3.9p10: > | A type is a literal type if it is: [...] > | - a class type (Clause 9) that has all of the following properties: > | - it has a trivial destructor, > | - every constructor call and full-expression in the > brace-or-equal-initializers for non-static data > | members (if any) is a constant expression (5.19),
I'll bet this is just the tip of the ice berg as libc++ has never before seen a compiler with constexpr support. I was just about to change this one item when it occurred to me that this *might* be a clang error. I am far from sure though. 7.1.5p8 is discussing *non-static* member functions. The code is showing a *static* member function. I'm poking around in the standard but haven't yet found a clarification concerning static member functions. But there seems to be some similar code in 26.5.3 [rand.eng]. You could fill a large auditorium with what I still have to learn about constexpr. :-\ Howard _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
