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),


Jonathan


_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to