[OT] Modules dropped out of C++17

ponce via Digitalmars-d digitalmars-d at puremagic.com
Mon Jun 8 13:25:08 PDT 2015


On Monday, 8 June 2015 at 19:57:34 UTC, Dmitry Olshansky wrote:
> And they seem to almost have CTFE(!)
>
> From wiki on C++14:
>
> C++11 introduced the concept of a constexpr-declared function; 
> a function which could be executed at compile time. Their 
> return values could be consumed by operations that require 
> constant expressions, such as an integer template argument. 
> However, C++11 constexpr functions could only contain a single 
> expression that is returned (as well as static_asserts and a 
> small number of other declarations).
>
> C++14 relaxes these restrictions. Constexpr-declared functions 
> may now contain the following:[5]
>
>     Any declarations except:
>         static or thread_local variables.
>         Variable declarations without initializers.
>     The conditional branching statements if and switch.
>     All looping statements, including range-based for.
>     Expressions which change the value of an object if the 
> lifetime of that object began within the constant expression 
> function. This includes calls to any non-const 
> constexpr-declared non-static member functions.
>
> goto statements are forbidden in C++14 relaxed 
> constexpr-declared functions.

C++'s constexpr looks broken because everything must be marked 
constexpre, which defeats the purpose of having compile-time code 
looking like runtime code. But I never had the pleasure to use it.


More information about the Digitalmars-d mailing list