diff --git a/make.c b/make.c index 92e666e..9a4ca6f 100644 --- a/make.c +++ b/make.c @@ -328,8 +328,10 @@ LANG_define => 全局定義 /* 例 lambda_s(int, int x)(x+y;) */\ /* 例 lambda_s_withTypeOfBody(int, int x __ int)(x+y;) */\ /* 例 lambda_withTypeOfBody((int, int x) __ int)(x+y;) */\ + /* 例 withTypeOfBody_lambda(int __ (int, int x))(x+y;) */\ DEFINE(X(LANG_prefix"lambda_error"),Call1(X(TOOLS_prefix"error"),String( \ - "lambda_s requires C++11 or later, lambda_s_withTypeOfBody requires GCC or C++11 or later" \ + "lambda_s requires C++11 or later," \ + "lambda_s_withTypeOfBody, withTypeOfBody_lambda and lambda_withTypeOfBody requires GCC or C++11 or later" \ ))) \ LANG_EXPORT("__") DEFINE(X(LANG_prefix"__"),X(",")) \ LANG_EXPORT("lambda_s") \ @@ -340,6 +342,7 @@ LANG_define => 全局定義 X("[&](")Call1(X(TOOLS_prefix"init"),X("__VA_ARGS__"))X(")->") \ Call1(X(TOOLS_prefix"last"),X("__VA_ARGS__"))X(" "LANG_prefix"lambda_hELPEr")) \ DEFINE_FUNCTION(X(LANG_prefix"lambda_withTypeOfBody"),X("args,ret"),X("[&](args)->ret "LANG_prefix"lambda_hELPEr")) \ + DEFINE_FUNCTION(X(LANG_prefix"withTypeOfBody_lambda"),X("ret,args"),X("[&](args)->ret "LANG_prefix"lambda_hELPEr")) \ DEFINE_FUNCTION(X(LANG_prefix"lambda_hELPEr"),X("x"),X("{return ({x});}")) \ ELSE \ DEFINE_FUNCTION(X(LANG_prefix"lambda_s"),X("..."),X(LANG_prefix"lambda_error")) \ @@ -349,11 +352,14 @@ LANG_define => 全局定義 Call1(X(TOOLS_prefix"init"),X("__VA_ARGS__"))X(")"LANG_prefix"lambda_withTypeOfBody_hELPEr")) \ DEFINE_FUNCTION(X(LANG_prefix"lambda_withTypeOfBody"),X("args,ret"), \ X("({ret "LANG_prefix"lambda_withTypeOfBody_tEMp(args)"LANG_prefix"lambda_withTypeOfBody_hELPEr")) \ + DEFINE_FUNCTION(X(LANG_prefix"withTypeOfBody_lambda"),X("ret,args"), \ + X("({ret "LANG_prefix"lambda_withTypeOfBody_tEMp(args)"LANG_prefix"lambda_withTypeOfBody_hELPEr")) \ DEFINE_FUNCTION(X(LANG_prefix"lambda_withTypeOfBody_hELPEr"),X("x"), \ X("{return ({x});}"LANG_prefix"lambda_withTypeOfBody_tEMp;})")) \ ELSE \ DEFINE_FUNCTION(X(LANG_prefix"lambda_s_withTypeOfBody"),X("..."),X(LANG_prefix"lambda_error")) \ DEFINE_FUNCTION(X(LANG_prefix"lambda_withTypeOfBody"),X("..."),X(LANG_prefix"lambda_error")) \ + DEFINE_FUNCTION(X(LANG_prefix"withTypeOfBody_lambda"),X("..."),X(LANG_prefix"lambda_error")) \ ENDIF \ ENDIF \ \ diff --git a/module< b/module< index 7680e3d..b33551a 100644 --- a/module< +++ b/module< @@ -354,7 +354,7 @@ typedef intptr_t exprOrientedC_LANG_int_pointer; #define exprOrientedC_LANG_let_current_continuation_notFirstClass_hELPEr(body) exprOrientedC_LANG_tEMp_letcc_notVal_val=({body});exprOrientedC_LANG_tEMp_letcc_return:exprOrientedC_LANG_tEMp_letcc_notVal_val;}) #define continuation_notFirstClass_throw exprOrientedC_LANG_continuation_notFirstClass_throw #define exprOrientedC_LANG_continuation_notFirstClass_throw(ider,x,type) ({exprOrientedC_LANG_tEMp_letcc_notVal_val_##ider=x;goto exprOrientedC_LANG_tEMp_letcc_throw_##ider;type tEMp;tEMp;}) -#define exprOrientedC_LANG_lambda_error exprOrientedC_TOOLS_error("lambda_s requires C++11 or later, lambda_s_withTypeOfBody requires GCC or C++11 or later") +#define exprOrientedC_LANG_lambda_error exprOrientedC_TOOLS_error("lambda_s requires C++11 or later,lambda_s_withTypeOfBody, withTypeOfBody_lambda and lambda_withTypeOfBody requires GCC or C++11 or later") #define __ exprOrientedC_LANG___ #define exprOrientedC_LANG___ , #define lambda_s exprOrientedC_LANG_lambda_s @@ -363,16 +363,19 @@ typedef intptr_t exprOrientedC_LANG_int_pointer; #define exprOrientedC_LANG_lambda_s(...) [&](__VA_ARGS__) exprOrientedC_LANG_lambda_hELPEr #define exprOrientedC_LANG_lambda_s_withTypeOfBody(...) [&](exprOrientedC_TOOLS_init(__VA_ARGS__))->exprOrientedC_TOOLS_last(__VA_ARGS__) exprOrientedC_LANG_lambda_hELPEr #define exprOrientedC_LANG_lambda_withTypeOfBody(args,ret) [&](args)->ret exprOrientedC_LANG_lambda_hELPEr +#define exprOrientedC_LANG_withTypeOfBody_lambda(ret,args) [&](args)->ret exprOrientedC_LANG_lambda_hELPEr #define exprOrientedC_LANG_lambda_hELPEr(x) {return ({x});} #else #define exprOrientedC_LANG_lambda_s(...) exprOrientedC_LANG_lambda_error #if defined(__GNUC__) #define exprOrientedC_LANG_lambda_s_withTypeOfBody(...) ({exprOrientedC_TOOLS_last(__VA_ARGS__) exprOrientedC_LANG_lambda_withTypeOfBody_tEMp(exprOrientedC_TOOLS_init(__VA_ARGS__))exprOrientedC_LANG_lambda_withTypeOfBody_hELPEr #define exprOrientedC_LANG_lambda_withTypeOfBody(args,ret) ({ret exprOrientedC_LANG_lambda_withTypeOfBody_tEMp(args)exprOrientedC_LANG_lambda_withTypeOfBody_hELPEr +#define exprOrientedC_LANG_withTypeOfBody_lambda(ret,args) ({ret exprOrientedC_LANG_lambda_withTypeOfBody_tEMp(args)exprOrientedC_LANG_lambda_withTypeOfBody_hELPEr #define exprOrientedC_LANG_lambda_withTypeOfBody_hELPEr(x) {return ({x});}exprOrientedC_LANG_lambda_withTypeOfBody_tEMp;}) #else #define exprOrientedC_LANG_lambda_s_withTypeOfBody(...) exprOrientedC_LANG_lambda_error #define exprOrientedC_LANG_lambda_withTypeOfBody(...) exprOrientedC_LANG_lambda_error +#define exprOrientedC_LANG_withTypeOfBody_lambda(...) exprOrientedC_LANG_lambda_error #endif #endif #define var exprOrientedC_LANG_var