diff --git a/CodeGenerator.cpp b/CodeGenerator.cpp index b42f768f..9dca5eb1 100644 --- a/CodeGenerator.cpp +++ b/CodeGenerator.cpp @@ -4704,10 +4704,8 @@ void CodeGenerator::InsertFunctionNameWithReturnType(const FunctionDecl& d const bool requiresComment{isCXXMethodDecl and not methodDecl->isUserProvided() and not methodDecl->isExplicitlyDefaulted()}; // [expr.prim.lambda.closure] p7 consteval/constexpr are obtained from the call operator - const bool isLambdaStaticInvoker{isCXXMethodDecl and methodDecl->isLambdaStaticInvoker()}; - const FunctionDecl& constExprDecl{not isLambdaStaticInvoker ? decl - : *methodDecl->getParent()->getLambdaCallOperator()}; - const auto desugaredReturnType = GetType(GetDesugarReturnType(decl)); + const bool isLambdaStaticInvoker{isCXXMethodDecl and methodDecl->isLambdaStaticInvoker()}; + const auto desugaredReturnType = GetType(GetDesugarReturnType(decl)); if(methodDecl) { if(requiresComment) { @@ -4793,34 +4791,34 @@ void CodeGenerator::InsertFunctionNameWithReturnType(const FunctionDecl& d } } - if(constExprDecl.isConstexpr()) { - const bool skipConstexpr{isLambda and not isa(constExprDecl)}; - // Special treatment for a conversion operator in a captureless lambda. It appears that if the call operator - // is consteval the conversion operator must be as well, otherwise it cannot take the address of the invoke - // function. - const bool isConversionOpWithConstevalCallOp{[&]() { - if(methodDecl) { - if(const auto callOp = methodDecl->getParent()->getLambdaCallOperator()) { - return callOp->isConsteval(); - } - } + if(const FunctionDecl& constExprDecl{isLambdaStaticInvoker ? *methodDecl->getParent()->getLambdaCallOperator() + : decl}; + constExprDecl.isConstexpr()) { - return false; - }()}; + ConstexprSpecKind constexrKind{constExprDecl.isImmediateFunction() ? ConstexprSpecKind::Consteval + : constExprDecl.getConstexprKind()}; - if(not isConversionOpWithConstevalCallOp and constExprDecl.isConstexprSpecified()) { - if(skipConstexpr) { - mOutputFormatHelper.Append(kwCommentStart); - } - - mOutputFormatHelper.Append(kwConstExprSpace); + if(isLambda) { + // Special treatment for a conversion operator in a captureless lambda. It appears that if the call operator + // is consteval the conversion operator must be manually promoted to consteval as well, otherwise it cannot + // take the address of the invoke function. + if(const auto* callOp{methodDecl->getParent()->getLambdaCallOperator()}; isa(decl)) { + if(callOp->isConsteval()) { + constexrKind = ConstexprSpecKind::Consteval; + } - if(skipConstexpr) { - mOutputFormatHelper.Append(kwCCommentEndSpace); + } else if(llvm::SmallVector Diags{}; + // remove a potential constexpr from a lambda if the function is unusable in a constant expression + not clang::Expr::isPotentialConstantExpr(callOp, Diags)) { + constexrKind = ConstexprSpecKind::Unspecified; } + } - } else if(isConversionOpWithConstevalCallOp or constExprDecl.isConsteval()) { - mOutputFormatHelper.Append(kwConstEvalSpace); + switch(constexrKind) { + case ConstexprSpecKind::Unspecified: break; + case ConstexprSpecKind::Constexpr: mOutputFormatHelper.Append(kwConstExprSpace); break; + case ConstexprSpecKind::Consteval: mOutputFormatHelper.Append(kwConstEvalSpace); break; + case ConstexprSpecKind::Constinit: break; } } diff --git a/tests/Basic.Start.Main.P5.3Test.expect b/tests/Basic.Start.Main.P5.3Test.expect index 4701dfef..f3ea1d7a 100644 --- a/tests/Basic.Start.Main.P5.3Test.expect +++ b/tests/Basic.Start.Main.P5.3Test.expect @@ -4,7 +4,7 @@ int main() class __lambda_3_13 { public: - inline /*constexpr */ int operator()() const + inline constexpr int operator()() const { return 2; } @@ -16,7 +16,7 @@ int main() }; private: - static inline /*constexpr */ int __invoke() + static inline constexpr int __invoke() { return __lambda_3_13{}.operator()(); } diff --git a/tests/Basic.Start.Main.P5.4Test.expect b/tests/Basic.Start.Main.P5.4Test.expect index 8afb5f68..77b20426 100644 --- a/tests/Basic.Start.Main.P5.4Test.expect +++ b/tests/Basic.Start.Main.P5.4Test.expect @@ -8,7 +8,7 @@ int main(int argc, const char ** argv) class __lambda_5_13 { public: - inline /*constexpr */ int operator()() const + inline constexpr int operator()() const { return 2; } @@ -20,7 +20,7 @@ int main(int argc, const char ** argv) }; private: - static inline /*constexpr */ int __invoke() + static inline constexpr int __invoke() { return __lambda_5_13{}.operator()(); } diff --git a/tests/ConstraintAutoParameterTest.expect b/tests/ConstraintAutoParameterTest.expect index df59cd30..9c303486 100644 --- a/tests/ConstraintAutoParameterTest.expect +++ b/tests/ConstraintAutoParameterTest.expect @@ -7,20 +7,20 @@ class __lambda_6_15 { public: template - inline /*constexpr */ auto operator()(type_parameter_0_0 container) const + inline constexpr auto operator()(type_parameter_0_0 container) const { } #ifdef INSIGHTS_USE_TEMPLATE template<> - inline /*constexpr */ void operator()(int container) const + inline constexpr void operator()(int container) const { } #endif private: template - static inline /*constexpr */ auto __invoke(type_parameter_0_0 container) + static inline constexpr auto __invoke(type_parameter_0_0 container) { return __lambda_6_15{}.operator()(container); } diff --git a/tests/EmptyLambda.expect b/tests/EmptyLambda.expect index 3c4875ba..cc082486 100644 --- a/tests/EmptyLambda.expect +++ b/tests/EmptyLambda.expect @@ -4,7 +4,7 @@ void foo() class __lambda_2_1 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } @@ -15,7 +15,7 @@ void foo() }; private: - static inline /*constexpr */ void __invoke() + static inline constexpr void __invoke() { __lambda_2_1{}.operator()(); } diff --git a/tests/ForStmtWithLambdaInInitTest.expect b/tests/ForStmtWithLambdaInInitTest.expect index f54e8cf0..37b66750 100644 --- a/tests/ForStmtWithLambdaInInitTest.expect +++ b/tests/ForStmtWithLambdaInInitTest.expect @@ -7,7 +7,7 @@ int main() class __lambda_7_17 { public: - inline /*constexpr */ int operator()() const + inline constexpr int operator()() const { return x * 2; } @@ -24,7 +24,7 @@ int main() class __lambda_11_17 { public: - inline /*constexpr */ int operator()() const + inline constexpr int operator()() const { return x * 2; } @@ -37,7 +37,7 @@ int main() class __lambda_11_43 { public: - inline /*constexpr */ int operator()() const + inline constexpr int operator()() const { return x * 2; } @@ -54,7 +54,7 @@ int main() class __lambda_15_9 { public: - inline /*constexpr */ void operator()() const + inline void operator()() const { printf("started\n"); } @@ -66,7 +66,7 @@ int main() }; private: - static inline /*constexpr */ void __invoke() + static inline void __invoke() { __lambda_15_9{}.operator()(); } @@ -77,7 +77,7 @@ int main() class __lambda_15_37 { public: - inline /*constexpr */ int operator()() const + inline constexpr int operator()() const { return --x; } @@ -90,7 +90,7 @@ int main() class __lambda_15_59 { public: - inline /*constexpr */ void operator()() const + inline void operator()() const { printf("after\n"); } @@ -102,7 +102,7 @@ int main() }; private: - static inline /*constexpr */ void __invoke() + static inline void __invoke() { __lambda_15_59{}.operator()(); } @@ -116,7 +116,7 @@ int main() class __lambda_19_9 { public: - inline /*constexpr */ void operator()() const + inline void operator()() const { printf("started\n"); } @@ -128,7 +128,7 @@ int main() }; private: - static inline /*constexpr */ void __invoke() + static inline void __invoke() { __lambda_19_9{}.operator()(); } @@ -139,7 +139,7 @@ int main() class __lambda_20_9 { public: - inline /*constexpr */ void operator()() const + inline void operator()() const { printf("started\n"); } @@ -151,7 +151,7 @@ int main() }; private: - static inline /*constexpr */ void __invoke() + static inline void __invoke() { __lambda_20_9{}.operator()(); } @@ -162,7 +162,7 @@ int main() class __lambda_20_37 { public: - inline /*constexpr */ int operator()() const + inline constexpr int operator()() const { return --x; } @@ -175,7 +175,7 @@ int main() class __lambda_20_59 { public: - inline /*constexpr */ void operator()() const + inline void operator()() const { printf("after\n"); } @@ -187,7 +187,7 @@ int main() }; private: - static inline /*constexpr */ void __invoke() + static inline void __invoke() { __lambda_20_59{}.operator()(); } diff --git a/tests/IfStmtWithLambdaInInitTest.expect b/tests/IfStmtWithLambdaInInitTest.expect index b2d7e5dc..fc727f3d 100644 --- a/tests/IfStmtWithLambdaInInitTest.expect +++ b/tests/IfStmtWithLambdaInInitTest.expect @@ -5,7 +5,7 @@ int main() class __lambda_3_14 { public: - inline /*constexpr */ int operator()() const + inline constexpr int operator()() const { return 2; } @@ -17,7 +17,7 @@ int main() }; private: - static inline /*constexpr */ int __invoke() + static inline constexpr int __invoke() { return __lambda_3_14{}.operator()(); } @@ -29,7 +29,7 @@ int main() class __lambda_3_34 { public: - inline /*constexpr */ int operator()() const + inline constexpr int operator()() const { return 3; } @@ -41,7 +41,7 @@ int main() }; private: - static inline /*constexpr */ int __invoke() + static inline constexpr int __invoke() { return __lambda_3_34{}.operator()(); } @@ -53,7 +53,7 @@ int main() class __lambda_3_53 { public: - inline /*constexpr */ int operator()() const + inline constexpr int operator()() const { return 4; } @@ -65,7 +65,7 @@ int main() }; private: - static inline /*constexpr */ int __invoke() + static inline constexpr int __invoke() { return __lambda_3_53{}.operator()(); } diff --git a/tests/Issue102.expect b/tests/Issue102.expect index 1e62e864..07b8d07b 100644 --- a/tests/Issue102.expect +++ b/tests/Issue102.expect @@ -490,7 +490,7 @@ int test(int && value) class __lambda_74_4 { public: - inline /*constexpr */ int operator()(int i) const + inline int operator()(int i) const { std::operator<<(std::cout, "This is int "); return i * 100; @@ -503,7 +503,7 @@ int test(int && value) }; private: - static inline /*constexpr */ int __invoke(int i) + static inline int __invoke(int i) { return __lambda_74_4{}.operator()(i); } @@ -515,14 +515,14 @@ int test(int && value) { public: template - inline /*constexpr */ auto operator()(type_parameter_0_0 a) const + inline constexpr auto operator()(type_parameter_0_0 a) const { std::operator<<(std::cout, "This is default "); return 0; } private: template - static inline /*constexpr */ auto __invoke(type_parameter_0_0 a) + static inline constexpr auto __invoke(type_parameter_0_0 a) { return __lambda_75_4{}.operator()(a); } @@ -565,7 +565,7 @@ int test(const char (&value)[3]) class __lambda_74_4 { public: - inline /*constexpr */ int operator()(int i) const + inline int operator()(int i) const { std::operator<<(std::cout, "This is int "); return i * 100; @@ -578,7 +578,7 @@ int test(const char (&value)[3]) }; private: - static inline /*constexpr */ int __invoke(int i) + static inline int __invoke(int i) { return __lambda_74_4{}.operator()(i); } @@ -590,7 +590,7 @@ int test(const char (&value)[3]) { public: template - inline /*constexpr */ auto operator()(type_parameter_0_0 a) const + inline constexpr auto operator()(type_parameter_0_0 a) const { std::operator<<(std::cout, "This is default "); return 0; @@ -598,7 +598,7 @@ int test(const char (&value)[3]) #ifdef INSIGHTS_USE_TEMPLATE template<> - inline /*constexpr */ int operator()(const char * a) const + inline constexpr int operator()(const char * a) const { std::operator<<(std::cout, "This is default "); return 0; @@ -607,7 +607,7 @@ int test(const char (&value)[3]) private: template - static inline /*constexpr */ auto __invoke(type_parameter_0_0 a) + static inline constexpr auto __invoke(type_parameter_0_0 a) { return __lambda_75_4{}.operator()(a); } @@ -650,7 +650,7 @@ std::basic_string, std::allocator > test, std::allocator > test, std::allocator > test - inline /*constexpr */ auto operator()(type_parameter_0_0 a) const + inline constexpr auto operator()(type_parameter_0_0 a) const { std::operator<<(std::cout, "This is default "); return 0; } private: template - static inline /*constexpr */ auto __invoke(type_parameter_0_0 a) + static inline constexpr auto __invoke(type_parameter_0_0 a) { return __lambda_75_4{}.operator()(a); } diff --git a/tests/Issue127.expect b/tests/Issue127.expect index 7f458432..f60a2fa2 100644 --- a/tests/Issue127.expect +++ b/tests/Issue127.expect @@ -3,12 +3,12 @@ class __lambda_1_10 { public: template - inline /*constexpr */ auto operator()(type_parameter_0_0) const + inline constexpr auto operator()(type_parameter_0_0) const { } private: template - static inline /*constexpr */ auto __invoke(type_parameter_0_0 __param0) + static inline constexpr auto __invoke(type_parameter_0_0 __param0) { return __lambda_1_10{}.operator()(__param0); } diff --git a/tests/Issue176.expect b/tests/Issue176.expect index 97e5e6aa..35187e68 100644 --- a/tests/Issue176.expect +++ b/tests/Issue176.expect @@ -5,14 +5,14 @@ class __lambda_6_12 { public: template - inline /*constexpr */ auto operator()(T i) const + inline constexpr auto operator()(T i) const { return 1; } #ifdef INSIGHTS_USE_TEMPLATE template<> - inline /*constexpr */ int operator()(int i) const + inline constexpr int operator()(int i) const { return 1; } @@ -20,7 +20,7 @@ class __lambda_6_12 private: template - static inline /*constexpr */ auto __invoke(T i) + static inline constexpr auto __invoke(T i) { return __lambda_6_12{}.operator()(i); } diff --git a/tests/Issue2.expect b/tests/Issue2.expect index 7c3cb182..58f5f42c 100644 --- a/tests/Issue2.expect +++ b/tests/Issue2.expect @@ -28,7 +28,7 @@ int main() class __lambda_20_16 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } @@ -46,7 +46,7 @@ int main() class __lambda_24_16 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } diff --git a/tests/Issue205.expect b/tests/Issue205.expect index ee28e5bd..dae4019e 100644 --- a/tests/Issue205.expect +++ b/tests/Issue205.expect @@ -14,7 +14,7 @@ class EventContainer class __lambda_6_43 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { std::cout.operator<<(__this->val); } @@ -22,8 +22,8 @@ class EventContainer // private: EventContainer * __this; public: - // inline /*constexpr */ __lambda_6_43(const __lambda_6_43 &) noexcept = default; - // inline /*constexpr */ __lambda_6_43(__lambda_6_43 &&) noexcept = default; + // inline constexpr __lambda_6_43(const __lambda_6_43 &) noexcept = default; + // inline constexpr __lambda_6_43(__lambda_6_43 &&) noexcept = default; }; // inline constexpr EventContainer() noexcept(false) = default; diff --git a/tests/Issue205_2.expect b/tests/Issue205_2.expect index 717dcc95..245e6867 100644 --- a/tests/Issue205_2.expect +++ b/tests/Issue205_2.expect @@ -12,7 +12,7 @@ class EventContainer class __lambda_6_43 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { std::cout.operator<<(__this->val); } @@ -20,8 +20,8 @@ class EventContainer // private: EventContainer * __this; public: - // inline /*constexpr */ __lambda_6_43(const __lambda_6_43 &) noexcept = default; - // inline /*constexpr */ __lambda_6_43(__lambda_6_43 &&) noexcept = default; + // inline constexpr __lambda_6_43(const __lambda_6_43 &) noexcept = default; + // inline constexpr __lambda_6_43(__lambda_6_43 &&) noexcept = default; }; inline EventContainer() diff --git a/tests/Issue238.expect b/tests/Issue238.expect index 4e58c41f..eb6fadf2 100644 --- a/tests/Issue238.expect +++ b/tests/Issue238.expect @@ -5,7 +5,7 @@ void f() { public: template - inline /*constexpr */ auto operator()(type_parameter_0_0 container) const + inline constexpr auto operator()(type_parameter_0_0 container) const { { auto && __range2 = container; @@ -17,7 +17,7 @@ void f() } private: template - static inline /*constexpr */ auto __invoke(type_parameter_0_0 container) + static inline constexpr auto __invoke(type_parameter_0_0 container) { return __lambda_1_26{}.operator()(container); } diff --git a/tests/Issue238_2.expect b/tests/Issue238_2.expect index 692efebf..25955cae 100644 --- a/tests/Issue238_2.expect +++ b/tests/Issue238_2.expect @@ -48,7 +48,7 @@ void f() { public: template - inline /*constexpr */ auto operator()(type_parameter_0_0 container) const + inline constexpr auto operator()(type_parameter_0_0 container) const { { auto && __range2 = container; @@ -61,7 +61,7 @@ void f() #ifdef INSIGHTS_USE_TEMPLATE template<> - inline /*constexpr */ void operator() >(MyArrayWrapper container) const + inline constexpr void operator() >(MyArrayWrapper container) const { { MyArrayWrapper & __range2 = container; @@ -77,7 +77,7 @@ void f() private: template - static inline /*constexpr */ auto __invoke(type_parameter_0_0 container) + static inline constexpr auto __invoke(type_parameter_0_0 container) { return __lambda_15_17{}.operator()(container); } diff --git a/tests/Issue238_3.expect b/tests/Issue238_3.expect index a5663b31..cba31f16 100644 --- a/tests/Issue238_3.expect +++ b/tests/Issue238_3.expect @@ -5,7 +5,7 @@ void f() { public: template - inline /*constexpr */ auto operator()(type_parameter_0_0 init, type_parameter_0_1 container) const + inline constexpr auto operator()(type_parameter_0_0 init, type_parameter_0_1 container) const { { auto i = init; @@ -18,7 +18,7 @@ void f() } private: template - static inline /*constexpr */ auto __invoke(type_parameter_0_0 init, type_parameter_0_1 container) + static inline constexpr auto __invoke(type_parameter_0_0 init, type_parameter_0_1 container) { return __lambda_2_26{}.operator()(init, container); } diff --git a/tests/Issue258.expect b/tests/Issue258.expect index 0d4565e5..bf0e13e4 100644 --- a/tests/Issue258.expect +++ b/tests/Issue258.expect @@ -8,7 +8,7 @@ int main() class __lambda_7_19 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { std::operator<<(std::cout.operator<<(x.operator*()), '\n'); } @@ -16,7 +16,7 @@ int main() // private: std::unique_ptr > x; public: - // inline /*constexpr */ __lambda_7_19(const __lambda_7_19 &) /* noexcept */ = delete; + // inline constexpr __lambda_7_19(const __lambda_7_19 &) /* noexcept */ = delete; // inline __lambda_7_19 & operator=(const __lambda_7_19 &) /* noexcept */ = delete; // inline ~__lambda_7_19() noexcept = default; }; diff --git a/tests/Issue258_2.expect b/tests/Issue258_2.expect index dea606f7..69794466 100644 --- a/tests/Issue258_2.expect +++ b/tests/Issue258_2.expect @@ -29,7 +29,7 @@ int main() class __lambda_22_19 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { printf("%d\n", x.Get()); } diff --git a/tests/Issue264.expect b/tests/Issue264.expect index 4a3f7c37..a5f5f90b 100644 --- a/tests/Issue264.expect +++ b/tests/Issue264.expect @@ -3,14 +3,14 @@ class __lambda_2_10 { public: template - inline /*constexpr */ auto operator()(type_parameter_0_0... i) const + inline constexpr auto operator()(type_parameter_0_0... i) const { return (... / i); } #ifdef INSIGHTS_USE_TEMPLATE template<> - inline /*constexpr */ int operator()(int __i0, int __i1, int __i2) const + inline constexpr int operator()(int __i0, int __i1, int __i2) const { return (__i0 / __i1) / __i2; } @@ -18,7 +18,7 @@ class __lambda_2_10 private: template - static inline /*constexpr */ auto __invoke(type_parameter_0_0... i) + static inline constexpr auto __invoke(type_parameter_0_0... i) { return __lambda_2_10{}.operator()(i...); } @@ -30,14 +30,14 @@ class __lambda_3_10 { public: template - inline /*constexpr */ auto operator()(type_parameter_0_0... i) const + inline constexpr auto operator()(type_parameter_0_0... i) const { return (i / ...); } #ifdef INSIGHTS_USE_TEMPLATE template<> - inline /*constexpr */ int operator()(int __i0, int __i1, int __i2) const + inline constexpr int operator()(int __i0, int __i1, int __i2) const { return __i0 / (__i1 / __i2); } @@ -45,7 +45,7 @@ class __lambda_3_10 private: template - static inline /*constexpr */ auto __invoke(type_parameter_0_0... i) + static inline constexpr auto __invoke(type_parameter_0_0... i) { return __lambda_3_10{}.operator()(i...); } diff --git a/tests/Issue288.expect b/tests/Issue288.expect index 1afd2c6c..94623f67 100644 --- a/tests/Issue288.expect +++ b/tests/Issue288.expect @@ -51,14 +51,14 @@ namespace expressions { public: template - inline /*constexpr */ auto operator()(type_parameter_0_0 val) const + inline constexpr auto operator()(type_parameter_0_0 val) const { return (operator&&(ex1(std::forward(val)), ex2(std::forward(val)))); } #ifdef INSIGHTS_USE_TEMPLATE template<> - inline /*constexpr */ bool operator()(int val) const + inline constexpr bool operator()(int val) const { return (ex1.operator()(std::forward(val)) && ex2.operator()(std::forward(val))); } @@ -68,7 +68,7 @@ namespace expressions __lambda_27_16 ex1; __lambda_32_16 ex2; public: - // inline /*constexpr */ __lambda_20_10 & operator=(const __lambda_20_10 &) /* noexcept */ = delete; + // inline constexpr __lambda_20_10 & operator=(const __lambda_20_10 &) /* noexcept */ = delete; }; return __lambda_20_10{std::move(ex1), std::move(ex2)}; @@ -79,7 +79,7 @@ namespace expressions class __lambda_27_16 { public: - inline /*constexpr */ bool operator()(int val) const + inline constexpr bool operator()(int val) const { return val > 10; } @@ -91,14 +91,14 @@ namespace expressions }; private: - static inline /*constexpr */ bool __invoke(int val) + static inline constexpr bool __invoke(int val) { return __lambda_27_16{}.operator()(val); } public: - // inline /*constexpr */ __lambda_27_16(__lambda_27_16 &&) noexcept = default; - // inline /*constexpr */ __lambda_27_16 & operator=(const __lambda_27_16 &) /* noexcept */ = delete; + // inline constexpr __lambda_27_16(__lambda_27_16 &&) noexcept = default; + // inline constexpr __lambda_27_16 & operator=(const __lambda_27_16 &) /* noexcept */ = delete; }; __lambda_27_16 Gt_10 = __lambda_27_16{}; @@ -106,7 +106,7 @@ namespace expressions class __lambda_32_16 { public: - inline /*constexpr */ bool operator()(int val) const + inline constexpr bool operator()(int val) const { return val < 20; } @@ -118,14 +118,14 @@ namespace expressions }; private: - static inline /*constexpr */ bool __invoke(int val) + static inline constexpr bool __invoke(int val) { return __lambda_32_16{}.operator()(val); } public: - // inline /*constexpr */ __lambda_32_16(__lambda_32_16 &&) noexcept = default; - // inline /*constexpr */ __lambda_32_16 & operator=(const __lambda_32_16 &) /* noexcept */ = delete; + // inline constexpr __lambda_32_16(__lambda_32_16 &&) noexcept = default; + // inline constexpr __lambda_32_16 & operator=(const __lambda_32_16 &) /* noexcept */ = delete; }; __lambda_32_16 Lt_20 = __lambda_32_16{}; diff --git a/tests/Issue3.expect b/tests/Issue3.expect index 638d114f..64f37c67 100644 --- a/tests/Issue3.expect +++ b/tests/Issue3.expect @@ -4,13 +4,13 @@ void x() class __lambda_3_12 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { class __lambda_4_5 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } @@ -21,7 +21,7 @@ void x() }; private: - static inline /*constexpr */ void __invoke() + static inline constexpr void __invoke() { __lambda_4_5{}.operator()(); } @@ -38,7 +38,7 @@ void x() }; private: - static inline /*constexpr */ void __invoke() + static inline constexpr void __invoke() { __lambda_3_12{}.operator()(); } diff --git a/tests/Issue344.expect b/tests/Issue344.expect index e80fe980..fabee4c2 100644 --- a/tests/Issue344.expect +++ b/tests/Issue344.expect @@ -4,7 +4,7 @@ int main() class __lambda_3_3 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } @@ -15,7 +15,7 @@ int main() }; private: - static inline /*constexpr */ void __invoke() + static inline constexpr void __invoke() { __lambda_3_3{}.operator()(); } diff --git a/tests/Issue347.expect b/tests/Issue347.expect index 5c2023e3..5bbf7fd3 100644 --- a/tests/Issue347.expect +++ b/tests/Issue347.expect @@ -7,7 +7,7 @@ int main() class __lambda_5_12 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } diff --git a/tests/Issue347_2.expect b/tests/Issue347_2.expect index 6d8c0dc0..408754fc 100644 --- a/tests/Issue347_2.expect +++ b/tests/Issue347_2.expect @@ -7,7 +7,7 @@ int main() class __lambda_5_12 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } diff --git a/tests/Issue369_2.expect b/tests/Issue369_2.expect index eaea497a..2935fd31 100644 --- a/tests/Issue369_2.expect +++ b/tests/Issue369_2.expect @@ -146,7 +146,7 @@ const void withNoexceptNoexceptCtor() class __lambda_19_23 { public: - inline /*constexpr */ buh operator()() const + inline constexpr buh operator()() const { return buh(); } @@ -158,7 +158,7 @@ const void withNoexceptNoexceptCtor() }; private: - static inline /*constexpr */ buh __invoke() + static inline constexpr buh __invoke() { return __lambda_19_23{}.operator()(); } diff --git a/tests/Issue379.expect b/tests/Issue379.expect index 72b74365..9d7c1518 100644 --- a/tests/Issue379.expect +++ b/tests/Issue379.expect @@ -9,7 +9,7 @@ struct C class __lambda_6_19 { public: - inline /*constexpr */ int operator()() const + inline constexpr int operator()() const { return __this->m + a; } diff --git a/tests/Issue386_2.expect b/tests/Issue386_2.expect index 8bdd25b3..5d7c8a87 100644 --- a/tests/Issue386_2.expect +++ b/tests/Issue386_2.expect @@ -5,7 +5,7 @@ int main() class __lambda_3_14 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } @@ -16,7 +16,7 @@ int main() }; private: - static inline /*constexpr */ void __invoke() + static inline constexpr void __invoke() { __lambda_3_14{}.operator()(); } @@ -31,7 +31,7 @@ int main() class __lambda_5_18 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } @@ -42,7 +42,7 @@ int main() }; private: - static inline /*constexpr */ void __invoke() + static inline constexpr void __invoke() { __lambda_5_18{}.operator()(); } @@ -57,7 +57,7 @@ int main() class __lambda_7_18 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } @@ -68,7 +68,7 @@ int main() }; private: - static inline /*constexpr */ void __invoke() + static inline constexpr void __invoke() { __lambda_7_18{}.operator()(); } diff --git a/tests/Issue4.expect b/tests/Issue4.expect index 0233ad0d..8e17f24d 100644 --- a/tests/Issue4.expect +++ b/tests/Issue4.expect @@ -9,7 +9,7 @@ int main() class __lambda_9_11 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { printf("a: %c\n", static_cast(uuu)); } diff --git a/tests/Issue402.expect b/tests/Issue402.expect index a4b29fc9..b1711dcb 100644 --- a/tests/Issue402.expect +++ b/tests/Issue402.expect @@ -4,7 +4,7 @@ int main() class __lambda_2_8 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } @@ -15,27 +15,27 @@ int main() }; private: - static inline /*constexpr */ void __invoke() + static inline constexpr void __invoke() { __lambda_2_8{}.operator()(); } public: - // inline /*constexpr */ __lambda_2_8 & operator=(const __lambda_2_8 &) /* noexcept */ = delete; + // inline constexpr __lambda_2_8 & operator=(const __lambda_2_8 &) /* noexcept */ = delete; }; class __lambda_2_3 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } // private: __lambda_2_8 var; public: - // inline /*constexpr */ __lambda_2_3 & operator=(const __lambda_2_3 &) /* noexcept */ = delete; + // inline constexpr __lambda_2_3 & operator=(const __lambda_2_3 &) /* noexcept */ = delete; }; return 0; diff --git a/tests/Issue41.expect b/tests/Issue41.expect index 81f19434..3cc67145 100644 --- a/tests/Issue41.expect +++ b/tests/Issue41.expect @@ -12,14 +12,14 @@ int main() { public: template - inline /*constexpr */ auto operator()(const type_parameter_0_0 & str) const + inline constexpr auto operator()(const type_parameter_0_0 & str) const { return operator==(str, "bbb"); } #ifdef INSIGHTS_USE_TEMPLATE template<> - inline /*constexpr */ bool operator(), std::allocator > >(const std::basic_string, std::allocator > & str) const + inline constexpr bool operator(), std::allocator > >(const std::basic_string, std::allocator > & str) const { return std::operator==(str, "bbb"); } @@ -27,7 +27,7 @@ int main() private: template - static inline /*constexpr */ auto __invoke(const type_parameter_0_0 & str) + static inline constexpr auto __invoke(const type_parameter_0_0 & str) { return __lambda_12_26{}.operator()(str); } diff --git a/tests/Issue46.expect b/tests/Issue46.expect index 6f64374c..ac7d573e 100644 --- a/tests/Issue46.expect +++ b/tests/Issue46.expect @@ -2,7 +2,7 @@ class __lambda_1_10 { public: - inline /*constexpr */ int operator()() const + inline constexpr int operator()() const { return 5; } @@ -14,7 +14,7 @@ class __lambda_1_10 }; private: - static inline /*constexpr */ int __invoke() + static inline constexpr int __invoke() { return __lambda_1_10{}.operator()(); } @@ -27,7 +27,7 @@ __lambda_1_10 x = __lambda_1_10{}; class __lambda_5_11 { public: - inline /*constexpr */ int operator()(int b) const + inline constexpr int operator()(int b) const { return b * a; } diff --git a/tests/Issue490.expect b/tests/Issue490.expect index 9e2517ee..37e1a276 100644 --- a/tests/Issue490.expect +++ b/tests/Issue490.expect @@ -2,7 +2,7 @@ class __lambda_3_24 { public: - inline /*constexpr */ int operator()() const + inline constexpr int operator()() const { return 4; } @@ -14,7 +14,7 @@ class __lambda_3_24 }; private: - static inline /*constexpr */ int __invoke() + static inline constexpr int __invoke() { return __lambda_3_24{}.operator()(); } diff --git a/tests/Issue490_2.expect b/tests/Issue490_2.expect index da4d4953..ee57e2dc 100644 --- a/tests/Issue490_2.expect +++ b/tests/Issue490_2.expect @@ -2,7 +2,7 @@ class __lambda_3_20 { public: - inline /*constexpr */ int operator()() const + inline constexpr int operator()() const { return 4; } @@ -14,7 +14,7 @@ class __lambda_3_20 }; private: - static inline /*constexpr */ int __invoke() + static inline constexpr int __invoke() { return __lambda_3_20{}.operator()(); } diff --git a/tests/Issue491.expect b/tests/Issue491.expect index 220c14eb..373a066c 100644 --- a/tests/Issue491.expect +++ b/tests/Issue491.expect @@ -2,7 +2,7 @@ class __lambda_1_16 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } @@ -13,7 +13,7 @@ class __lambda_1_16 } private: - static inline /*constexpr */ void __invoke() + static inline constexpr void __invoke() { __lambda_1_16{}.operator()(); } @@ -24,7 +24,7 @@ class __lambda_1_16 class __lambda_1_10 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } diff --git a/tests/Issue492.expect b/tests/Issue492.expect index a300d389..39bc583a 100644 --- a/tests/Issue492.expect +++ b/tests/Issue492.expect @@ -7,7 +7,7 @@ void f() class __lambda_10_34 { public: - inline /*constexpr */ bool operator()(int lhs, int rhs) const + inline constexpr bool operator()(int lhs, int rhs) const { return lhs > rhs; } @@ -19,7 +19,7 @@ void f() }; private: - static inline /*constexpr */ bool __invoke(int lhs, int rhs) + static inline constexpr bool __invoke(int lhs, int rhs) { return __lambda_10_34{}.operator()(lhs, rhs); } diff --git a/tests/Issue492_2.expect b/tests/Issue492_2.expect index 6f60f470..3ebf1cb1 100644 --- a/tests/Issue492_2.expect +++ b/tests/Issue492_2.expect @@ -30,7 +30,7 @@ void f() class __lambda_18_34 { public: - inline /*constexpr */ bool operator()() const + inline constexpr bool operator()() const { return false; } @@ -42,7 +42,7 @@ void f() }; private: - static inline /*constexpr */ bool __invoke() + static inline constexpr bool __invoke() { return __lambda_18_34{}.operator()(); } diff --git a/tests/Issue506.expect b/tests/Issue506.expect index ca54c788..e738b2ff 100644 --- a/tests/Issue506.expect +++ b/tests/Issue506.expect @@ -24,7 +24,7 @@ int main() class __lambda_12_50 { public: - inline /*constexpr */ bool operator()(char ch) const + inline constexpr bool operator()(char ch) const { return static_cast(ch) == static_cast('_'); } @@ -36,7 +36,7 @@ int main() }; private: - static inline /*constexpr */ bool __invoke(char ch) + static inline constexpr bool __invoke(char ch) { return __lambda_12_50{}.operator()(ch); } diff --git a/tests/Issue550.expect b/tests/Issue550.expect index 20f5f3ac..9cf9b4bc 100644 --- a/tests/Issue550.expect +++ b/tests/Issue550.expect @@ -2,7 +2,7 @@ class __lambda_4_13 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } @@ -13,7 +13,7 @@ class __lambda_4_13 }; private: - static inline /*constexpr */ void __invoke() + static inline constexpr void __invoke() { __lambda_4_13{}.operator()(); } @@ -30,20 +30,20 @@ class __lambda_7_14 { public: template - inline /*constexpr */ auto operator()() const + inline constexpr auto operator()() const { } #ifdef INSIGHTS_USE_TEMPLATE template<> - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } #endif private: template - static inline /*constexpr */ auto __invoke() + static inline constexpr auto __invoke() { return __lambda_7_14{}.operator()(); } @@ -63,7 +63,7 @@ int main() class __lambda_17_16 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } diff --git a/tests/Issue605.expect b/tests/Issue605.expect index 17a71f4f..74b30aeb 100644 --- a/tests/Issue605.expect +++ b/tests/Issue605.expect @@ -10,16 +10,16 @@ int main() class __lambda_11_5 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } // private: std::unique_ptr > a; public: - // inline /*constexpr */ __lambda_11_5(const __lambda_11_5 &) /* noexcept */ = delete; - // inline /*constexpr */ __lambda_11_5 & operator=(const __lambda_11_5 &) /* noexcept */ = delete; - // inline /*constexpr */ ~__lambda_11_5() noexcept = default; + // inline constexpr __lambda_11_5(const __lambda_11_5 &) /* noexcept */ = delete; + // inline constexpr __lambda_11_5 & operator=(const __lambda_11_5 &) /* noexcept */ = delete; + // inline constexpr ~__lambda_11_5() noexcept = default; }; ; diff --git a/tests/Issue628.expect b/tests/Issue628.expect index f8867dd7..0e1f887e 100644 --- a/tests/Issue628.expect +++ b/tests/Issue628.expect @@ -32,7 +32,7 @@ struct mysleep class __lambda_20_25 { public: - inline /*constexpr */ bool operator()() const + inline bool operator()() const { if(operator>(std::chrono::operator<=>(std::chrono::operator-(std::chrono::steady_clock::now(), start), d), std::_CmpUnspecifiedParam(0))) { h.resume(); @@ -48,8 +48,8 @@ struct mysleep std::coroutine_handle h; std::chrono::duration > d; public: - // inline /*constexpr */ __lambda_20_25(const __lambda_20_25 &) noexcept = default; - // inline /*constexpr */ __lambda_20_25(__lambda_20_25 &&) noexcept = default; + // inline __lambda_20_25(const __lambda_20_25 &) noexcept = default; + // inline __lambda_20_25(__lambda_20_25 &&) noexcept = default; }; task_queue.push(std::function(__lambda_20_25{start, h, this->delay})); diff --git a/tests/Issue633.expect b/tests/Issue633.expect index 43b1b6f0..3dff5500 100644 --- a/tests/Issue633.expect +++ b/tests/Issue633.expect @@ -16,7 +16,7 @@ int main() class __lambda_9_8 { public: - inline /*constexpr */ int operator()() const + inline constexpr int operator()() const { return k; } diff --git a/tests/Issue64.expect b/tests/Issue64.expect index 0479d741..ccacbf91 100644 --- a/tests/Issue64.expect +++ b/tests/Issue64.expect @@ -6,7 +6,7 @@ void func(const std::basic_string, std::allocator::size_type operator()() const + inline constexpr std::basic_string::size_type operator()() const { return arg.size(); } diff --git a/tests/Issue682.expect b/tests/Issue682.expect index 944dae8e..1daf2a40 100644 --- a/tests/Issue682.expect +++ b/tests/Issue682.expect @@ -10,7 +10,7 @@ void Fun() class __lambda_5_17 { public: - inline /*constexpr */ bool operator()() const + inline constexpr bool operator()() const { return true; } @@ -22,7 +22,7 @@ class __lambda_5_17 }; private: - static inline /*constexpr */ bool __invoke() + static inline constexpr bool __invoke() { return __lambda_5_17{}.operator()(); } diff --git a/tests/Issue704.expect b/tests/Issue704.expect index 7b0884ad..3ae7c899 100644 --- a/tests/Issue704.expect +++ b/tests/Issue704.expect @@ -13,7 +13,7 @@ void foo() class __lambda_12_17 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } @@ -34,7 +34,7 @@ void bar() class __lambda_19_20 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } diff --git a/tests/LambdaAndInClassInitializerTest.expect b/tests/LambdaAndInClassInitializerTest.expect index fc3c9fab..7323dd28 100644 --- a/tests/LambdaAndInClassInitializerTest.expect +++ b/tests/LambdaAndInClassInitializerTest.expect @@ -48,7 +48,7 @@ class EventContainer class __lambda_17_38 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { __this->val; } diff --git a/tests/LambdaAsTemplateArgTest.expect b/tests/LambdaAsTemplateArgTest.expect index 83ab16ee..b3193f13 100644 --- a/tests/LambdaAsTemplateArgTest.expect +++ b/tests/LambdaAsTemplateArgTest.expect @@ -27,7 +27,7 @@ int main() class __lambda_12_14 { public: - inline /*constexpr */ int operator()(int x, int b) const + inline constexpr int operator()(int x, int b) const { return (x + y) + b; } diff --git a/tests/LambdaCapturingFunctionTest.expect b/tests/LambdaCapturingFunctionTest.expect index 0e0d821a..3a8a08de 100644 --- a/tests/LambdaCapturingFunctionTest.expect +++ b/tests/LambdaCapturingFunctionTest.expect @@ -15,7 +15,7 @@ int main() class __lambda_15_14 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { d(3); } diff --git a/tests/LambdaHandler2Test.expect b/tests/LambdaHandler2Test.expect index 613cf13d..8d2b4833 100644 --- a/tests/LambdaHandler2Test.expect +++ b/tests/LambdaHandler2Test.expect @@ -4,7 +4,7 @@ int main() class __lambda_8_26 { public: - inline /*constexpr */ int operator()(int a, char b) const + inline constexpr int operator()(int a, char b) const { return a + static_cast(b); } @@ -16,7 +16,7 @@ int main() } private: - static inline /*constexpr */ int __invoke(int a, char b) + static inline constexpr int __invoke(int a, char b) { return __lambda_8_26{}.operator()(a, b); } diff --git a/tests/LambdaHandler3Test.expect b/tests/LambdaHandler3Test.expect index ea7b1bf1..6c765949 100644 --- a/tests/LambdaHandler3Test.expect +++ b/tests/LambdaHandler3Test.expect @@ -21,7 +21,7 @@ int main() class __lambda_10_13 { public: - inline /*constexpr */ int operator()(int x) const + inline constexpr int operator()(int x) const { return x + y; } diff --git a/tests/LambdaHandler4Test.expect b/tests/LambdaHandler4Test.expect index e0beb2f3..6dc1b60e 100644 --- a/tests/LambdaHandler4Test.expect +++ b/tests/LambdaHandler4Test.expect @@ -7,7 +7,7 @@ class Foo class __lambda_6_18 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { __this->Get(); } @@ -21,7 +21,7 @@ class Foo class __lambda_10_18 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { __this->Get(); } @@ -35,7 +35,7 @@ class Foo class __lambda_14_18 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { (&__this)->Get(); } @@ -72,7 +72,7 @@ struct X class __lambda_35_9 { public: - inline /*constexpr */ int operator()() const + inline constexpr int operator()() const { return __this->operator()(__this->x + __this->y); } diff --git a/tests/LambdaHandler5Test.expect b/tests/LambdaHandler5Test.expect index 92f2e1cc..da701b1f 100644 --- a/tests/LambdaHandler5Test.expect +++ b/tests/LambdaHandler5Test.expect @@ -4,7 +4,7 @@ int main() class __lambda_4_5 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } @@ -15,7 +15,7 @@ int main() }; private: - static inline /*constexpr */ void __invoke() + static inline constexpr void __invoke() { __lambda_4_5{}.operator()(); } @@ -27,7 +27,7 @@ int main() class __lambda_7_5 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { 1 * 2; } @@ -39,7 +39,7 @@ int main() }; private: - static inline /*constexpr */ void __invoke() + static inline constexpr void __invoke() { __lambda_7_5{}.operator()(); } @@ -53,7 +53,7 @@ int main() class __lambda_13_5 { public: - inline /*constexpr */ void operator()(int & x, int & y) const + inline constexpr void operator()(int & x, int & y) const { x = (x + y); } @@ -65,7 +65,7 @@ int main() }; private: - static inline /*constexpr */ void __invoke(int & x, int & y) + static inline constexpr void __invoke(int & x, int & y) { __lambda_13_5{}.operator()(x, y); } diff --git a/tests/LambdaHandler6Test.expect b/tests/LambdaHandler6Test.expect index 619cd8a2..7ba25d96 100644 --- a/tests/LambdaHandler6Test.expect +++ b/tests/LambdaHandler6Test.expect @@ -6,7 +6,7 @@ int main() class __lambda_5_5 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { l1 = (2 * l2); } diff --git a/tests/LambdaHandler7Test.expect b/tests/LambdaHandler7Test.expect index dc4d092a..c662a4d0 100644 --- a/tests/LambdaHandler7Test.expect +++ b/tests/LambdaHandler7Test.expect @@ -8,7 +8,7 @@ int main() class __lambda_8_57 { public: - inline /*constexpr */ int operator()(int fir, int sec) const + inline constexpr int operator()(int fir, int sec) const { return fir * sec; } @@ -20,7 +20,7 @@ int main() }; private: - static inline /*constexpr */ int __invoke(int fir, int sec) + static inline constexpr int __invoke(int fir, int sec) { return __lambda_8_57{}.operator()(fir, sec); } diff --git a/tests/LambdaHandler8Test.expect b/tests/LambdaHandler8Test.expect index 81036f5e..e97bdb6b 100644 --- a/tests/LambdaHandler8Test.expect +++ b/tests/LambdaHandler8Test.expect @@ -20,7 +20,7 @@ int get(int & v) class __lambda_9_18 { public: - inline /*constexpr */ int operator()() const + inline constexpr int operator()() const { return v; } diff --git a/tests/LambdaHandler9Test.expect b/tests/LambdaHandler9Test.expect index cdbe73e2..4ce54859 100644 --- a/tests/LambdaHandler9Test.expect +++ b/tests/LambdaHandler9Test.expect @@ -47,7 +47,7 @@ int main() class __lambda_25_14 { public: - inline /*constexpr */ void operator()(int x) const + inline constexpr void operator()(int x) const { switch(x) { case 2: printf("is 2\n"); diff --git a/tests/LambdaHandlerCaptureLessTest.expect b/tests/LambdaHandlerCaptureLessTest.expect index 81929041..678cc7a3 100644 --- a/tests/LambdaHandlerCaptureLessTest.expect +++ b/tests/LambdaHandlerCaptureLessTest.expect @@ -5,14 +5,14 @@ int main() { public: template - inline /*constexpr */ auto operator()(type_parameter_0_0 a, type_parameter_0_1 b) const + inline constexpr auto operator()(type_parameter_0_0 a, type_parameter_0_1 b) const { return a + b; } #ifdef INSIGHTS_USE_TEMPLATE template<> - inline /*constexpr */ int operator()(int a, char b) const + inline constexpr int operator()(int a, char b) const { return a + static_cast(b); } @@ -31,14 +31,14 @@ int main() private: template - static inline /*constexpr */ auto __invoke(type_parameter_0_0 a, type_parameter_0_1 b) + static inline constexpr auto __invoke(type_parameter_0_0 a, type_parameter_0_1 b) { return __lambda_4_28{}.operator()(a, b); } #ifdef INSIGHTS_USE_TEMPLATE template<> - static inline /*constexpr */ int __invoke(int a, char b) + static inline constexpr int __invoke(int a, char b) { return __lambda_4_28{}.operator()(a, b); } diff --git a/tests/LambdaHandlerInFunctionTest.expect b/tests/LambdaHandlerInFunctionTest.expect index e2456917..270f783a 100644 --- a/tests/LambdaHandlerInFunctionTest.expect +++ b/tests/LambdaHandlerInFunctionTest.expect @@ -29,7 +29,7 @@ int main() class __lambda_10_10 { public: - inline /*constexpr */ void operator()() const + inline void operator()() const { printf("Hello"); } @@ -41,7 +41,7 @@ int main() }; private: - static inline /*constexpr */ void __invoke() + static inline void __invoke() { __lambda_10_10{}.operator()(); } @@ -53,7 +53,7 @@ int main() class __lambda_12_10 { public: - inline /*constexpr */ int operator()() const + inline int operator()() const { printf("Bello"); return 1; @@ -66,7 +66,7 @@ int main() }; private: - static inline /*constexpr */ int __invoke() + static inline int __invoke() { return __lambda_12_10{}.operator()(); } diff --git a/tests/LambdaHandlerTest.expect b/tests/LambdaHandlerTest.expect index a1fcb4c4..e83c1a16 100644 --- a/tests/LambdaHandlerTest.expect +++ b/tests/LambdaHandlerTest.expect @@ -9,7 +9,7 @@ class Bar class __lambda_8_18 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { printf("%d\n", __this->a); } @@ -33,7 +33,7 @@ int main() class __lambda_20_19 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { printf("%d\n", foo); } @@ -48,7 +48,7 @@ int main() class __lambda_24_20 { public: - inline /*constexpr */ void operator()() const + inline void operator()() const { printf("%d\n", 1); } @@ -60,7 +60,7 @@ int main() }; private: - static inline /*constexpr */ void __invoke() + static inline void __invoke() { __lambda_24_20{}.operator()(); } @@ -73,7 +73,7 @@ int main() class __lambda_28_20 { public: - inline /*constexpr */ int operator()() + inline constexpr int operator()() { printf("%d\n", ++foo); return foo; @@ -89,7 +89,7 @@ int main() class __lambda_32_20 { public: - inline /*constexpr */ int operator()(int x) const + inline constexpr int operator()(int x) const { printf("%d\n", foo + x); return foo + x; @@ -104,7 +104,7 @@ int main() class __lambda_34_20 { public: - inline /*constexpr */ int operator()(const int x) const + inline constexpr int operator()(const int x) const { printf("%d\n", foo + x); return foo + x; @@ -119,7 +119,7 @@ int main() class __lambda_36_20 { public: - inline /*constexpr */ int operator()(int & x, int b) const + inline constexpr int operator()(int & x, int b) const { printf("%d\n", foo + x); return (foo + x) + b; @@ -135,7 +135,7 @@ int main() { public: template - inline /*constexpr */ auto operator()(int & x, type_parameter_0_0 b) const + inline constexpr auto operator()(int & x, type_parameter_0_0 b) const { printf("%d\n", foo + x); return (foo + x) + b; @@ -143,7 +143,7 @@ int main() #ifdef INSIGHTS_USE_TEMPLATE template<> - inline /*constexpr */ int operator()(int & x, int b) const + inline constexpr int operator()(int & x, int b) const { printf("%d\n", foo + x); return (foo + x) + b; @@ -161,7 +161,7 @@ int main() { public: template - inline /*constexpr */ auto operator()(int & x, const type_parameter_0_0 & b) const + inline constexpr auto operator()(int & x, const type_parameter_0_0 & b) const { printf("%d\n", foo + x); return (foo + x) + b; @@ -176,7 +176,7 @@ int main() { public: template - inline /*constexpr */ auto operator()(int & x, const type_parameter_0_0 & b, const type_parameter_0_1 c) const + inline constexpr auto operator()(int & x, const type_parameter_0_0 & b, const type_parameter_0_1 c) const { printf("%d\n", foo + x); return ((foo + x) + b) + c; @@ -184,7 +184,7 @@ int main() #ifdef INSIGHTS_USE_TEMPLATE template<> - inline /*constexpr */ int operator()(int & x, const int & b, const int c) const + inline constexpr int operator()(int & x, const int & b, const int c) const { printf("%d\n", foo + x); return ((foo + x) + b) + c; @@ -201,7 +201,7 @@ int main() class __lambda_46_20 { public: - inline /*constexpr */ int operator()(int & x, int bb) const + inline constexpr int operator()(int & x, int bb) const { printf("%d\n", foo + x); return (foo + x) + bb; @@ -217,7 +217,7 @@ int main() class __lambda_48_20 { public: - inline /*constexpr */ int operator()(int & x, int bb) const noexcept + inline constexpr int operator()(int & x, int bb) const noexcept { printf("%d\n", foo + x); return (foo + x) + bb; diff --git a/tests/LambdaHandlerVLA2Test.cerr b/tests/LambdaHandlerVLA2Test.cerr index 69a6812b..b607bc43 100644 --- a/tests/LambdaHandlerVLA2Test.cerr +++ b/tests/LambdaHandlerVLA2Test.cerr @@ -24,4 +24,7 @@ .tmp.cpp:15:12: error: fields must have a constant size: 'variable length array in structure' extension will never be supported 15 | char (&buffer)[n]; | ^ -3 warnings and 2 errors generated. +.tmp.cpp:8:27: error: no return statement in constexpr function + 8 | inline constexpr bool operator()(int i, int x) const + | ^ +3 warnings and 3 errors generated. diff --git a/tests/LambdaHandlerVLA2Test.expect b/tests/LambdaHandlerVLA2Test.expect index a7247a40..a07a08fd 100644 --- a/tests/LambdaHandlerVLA2Test.expect +++ b/tests/LambdaHandlerVLA2Test.expect @@ -5,7 +5,7 @@ void Test(int n) class __lambda_6_5 { public: - inline /*constexpr */ bool operator()(int i, int x) const + inline constexpr bool operator()(int i, int x) const { return static_cast(buffer[i]) > static_cast(buffer[x]); } diff --git a/tests/LambdaImplicitCaptureTest.expect b/tests/LambdaImplicitCaptureTest.expect index c80b6a84..d222bd1f 100644 --- a/tests/LambdaImplicitCaptureTest.expect +++ b/tests/LambdaImplicitCaptureTest.expect @@ -7,7 +7,7 @@ int main() class __lambda_7_14 { public: - inline /*constexpr */ int operator()() + inline constexpr int operator()() { ++x; return x; diff --git a/tests/LambdaInLamda2Test.cerr b/tests/LambdaInLamda2Test.cerr index 0ab3a414..4e3efde4 100644 --- a/tests/LambdaInLamda2Test.cerr +++ b/tests/LambdaInLamda2Test.cerr @@ -1,24 +1,24 @@ -.tmp.cpp:7:27: error: unknown type name 'S' - 7 | inline /*constexpr */ S operator()() const - | ^ +.tmp.cpp:7:22: error: unknown type name 'S' + 7 | inline constexpr S operator()() const + | ^ .tmp.cpp:18:25: error: unknown type name 'S' 18 | using retType_5_7 = S (*)(); | ^ .tmp.cpp:19:31: error: unknown type name 'retType_5_7' 19 | inline constexpr operator retType_5_7 () const noexcept | ^ -.tmp.cpp:25:34: error: unknown type name 'S' - 25 | static inline /*constexpr */ S __invoke() - | ^ +.tmp.cpp:25:29: error: unknown type name 'S' + 25 | static inline constexpr S __invoke() + | ^ .tmp.cpp:15:16: warning: braces around scalar initializer [-Wbraced-scalar-init] 15 | return S{{676}}; | ^~~~~ .tmp.cpp:15:14: error: no viable conversion from returned value of type 'S' to function return type 'int' 15 | return S{{676}}; | ^~~~~~~~ -.tmp.cpp:36:27: error: unknown type name 'S' - 36 | inline /*constexpr */ S operator()() - | ^ +.tmp.cpp:36:22: error: unknown type name 'S' + 36 | inline constexpr S operator()() + | ^ .tmp.cpp:43:5: error: unknown type name 'S' 43 | S s; | ^ diff --git a/tests/LambdaInLamda2Test.expect b/tests/LambdaInLamda2Test.expect index b7be024b..29495216 100644 --- a/tests/LambdaInLamda2Test.expect +++ b/tests/LambdaInLamda2Test.expect @@ -4,7 +4,7 @@ int main() class __lambda_5_7 { public: - inline /*constexpr */ S operator()() const + inline constexpr S operator()() const { struct S { @@ -22,7 +22,7 @@ int main() }; private: - static inline /*constexpr */ S __invoke() + static inline constexpr S __invoke() { return __lambda_5_7{}.operator()(); } @@ -33,7 +33,7 @@ int main() class __lambda_4_5 { public: - inline /*constexpr */ S operator()() + inline constexpr S operator()() { ++s.v; return S(s); @@ -42,7 +42,7 @@ int main() // private: S s; public: - // inline /*constexpr */ __lambda_4_5(const __lambda_4_5 &) noexcept = default; + // inline constexpr __lambda_4_5(const __lambda_4_5 &) noexcept = default; }; __lambda_4_5 l = __lambda_4_5{__lambda_5_7{}.operator()()}; diff --git a/tests/LambdaInLamdaTest.expect b/tests/LambdaInLamdaTest.expect index d94a13cd..2be0f305 100644 --- a/tests/LambdaInLamdaTest.expect +++ b/tests/LambdaInLamdaTest.expect @@ -5,13 +5,13 @@ int main() class __lambda_4_5 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { class __lambda_6_9 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { buffer = 2; } diff --git a/tests/LambdaInMemberCallExprTest.expect b/tests/LambdaInMemberCallExprTest.expect index 02fd4dba..fcbbee05 100644 --- a/tests/LambdaInMemberCallExprTest.expect +++ b/tests/LambdaInMemberCallExprTest.expect @@ -26,7 +26,7 @@ int main() class __lambda_13_12 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } diff --git a/tests/LambdaInVarDeclTest.expect b/tests/LambdaInVarDeclTest.expect index 7319acd3..5ebea2ec 100644 --- a/tests/LambdaInVarDeclTest.expect +++ b/tests/LambdaInVarDeclTest.expect @@ -11,7 +11,7 @@ int main() class __lambda_6_17 { public: - inline /*constexpr */ char operator()() const + inline constexpr char operator()() const { return c; } diff --git a/tests/LambdaInVariadicTemplateTest.expect b/tests/LambdaInVariadicTemplateTest.expect index 9e6f083c..afc74a1a 100644 --- a/tests/LambdaInVariadicTemplateTest.expect +++ b/tests/LambdaInVariadicTemplateTest.expect @@ -146,7 +146,7 @@ int test(int && value) class __lambda_14_4 { public: - inline /*constexpr */ int operator()(int i) const + inline int operator()(int i) const { std::operator<<(std::cout, "This is int "); return i * 100; @@ -159,7 +159,7 @@ int test(int && value) }; private: - static inline /*constexpr */ int __invoke(int i) + static inline int __invoke(int i) { return __lambda_14_4{}.operator()(i); } @@ -171,14 +171,14 @@ int test(int && value) { public: template - inline /*constexpr */ auto operator()(type_parameter_0_0 a) const + inline constexpr auto operator()(type_parameter_0_0 a) const { std::operator<<(std::cout, "This is default "); return 0; } private: template - static inline /*constexpr */ auto __invoke(type_parameter_0_0 a) + static inline constexpr auto __invoke(type_parameter_0_0 a) { return __lambda_15_4{}.operator()(a); } @@ -221,7 +221,7 @@ int test(const char (&value)[3]) class __lambda_14_4 { public: - inline /*constexpr */ int operator()(int i) const + inline int operator()(int i) const { std::operator<<(std::cout, "This is int "); return i * 100; @@ -234,7 +234,7 @@ int test(const char (&value)[3]) }; private: - static inline /*constexpr */ int __invoke(int i) + static inline int __invoke(int i) { return __lambda_14_4{}.operator()(i); } @@ -246,14 +246,14 @@ int test(const char (&value)[3]) { public: template - inline /*constexpr */ auto operator()(type_parameter_0_0 a) const + inline constexpr auto operator()(type_parameter_0_0 a) const { std::operator<<(std::cout, "This is default "); return 0; } private: template - static inline /*constexpr */ auto __invoke(type_parameter_0_0 a) + static inline constexpr auto __invoke(type_parameter_0_0 a) { return __lambda_15_4{}.operator()(a); } @@ -296,7 +296,7 @@ int test, std::allocator > class __lambda_14_4 { public: - inline /*constexpr */ int operator()(int i) const + inline int operator()(int i) const { std::operator<<(std::cout, "This is int "); return i * 100; @@ -309,7 +309,7 @@ int test, std::allocator > }; private: - static inline /*constexpr */ int __invoke(int i) + static inline int __invoke(int i) { return __lambda_14_4{}.operator()(i); } @@ -321,14 +321,14 @@ int test, std::allocator > { public: template - inline /*constexpr */ auto operator()(type_parameter_0_0 a) const + inline constexpr auto operator()(type_parameter_0_0 a) const { std::operator<<(std::cout, "This is default "); return 0; } private: template - static inline /*constexpr */ auto __invoke(type_parameter_0_0 a) + static inline constexpr auto __invoke(type_parameter_0_0 a) { return __lambda_15_4{}.operator()(a); } @@ -371,7 +371,7 @@ int test(float && value) class __lambda_14_4 { public: - inline /*constexpr */ int operator()(int i) const + inline int operator()(int i) const { std::operator<<(std::cout, "This is int "); return i * 100; @@ -384,7 +384,7 @@ int test(float && value) }; private: - static inline /*constexpr */ int __invoke(int i) + static inline int __invoke(int i) { return __lambda_14_4{}.operator()(i); } @@ -396,14 +396,14 @@ int test(float && value) { public: template - inline /*constexpr */ auto operator()(type_parameter_0_0 a) const + inline constexpr auto operator()(type_parameter_0_0 a) const { std::operator<<(std::cout, "This is default "); return 0; } private: template - static inline /*constexpr */ auto __invoke(type_parameter_0_0 a) + static inline constexpr auto __invoke(type_parameter_0_0 a) { return __lambda_15_4{}.operator()(a); } diff --git a/tests/LambdaInitCaptureTest.expect b/tests/LambdaInitCaptureTest.expect index cd0da7d2..70547cd8 100644 --- a/tests/LambdaInitCaptureTest.expect +++ b/tests/LambdaInitCaptureTest.expect @@ -5,7 +5,7 @@ int main() class __lambda_5_20 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } @@ -18,7 +18,7 @@ int main() class __lambda_7_16 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } diff --git a/tests/LambdaPackExpansionTest.expect b/tests/LambdaPackExpansionTest.expect index 0e9144dc..7588df0d 100644 --- a/tests/LambdaPackExpansionTest.expect +++ b/tests/LambdaPackExpansionTest.expect @@ -45,7 +45,7 @@ void f2(int __args0, int __args1, int __args2, int __ar class __lambda_19_15 { public: - inline /*constexpr */ int operator()() const + inline constexpr int operator()() const { return g(__args0, __args1, __args2, __args3, __args4); } diff --git a/tests/LambdaWithConstCapture.expect b/tests/LambdaWithConstCapture.expect index b50b0afb..2f5174c5 100644 --- a/tests/LambdaWithConstCapture.expect +++ b/tests/LambdaWithConstCapture.expect @@ -5,7 +5,7 @@ int main() class __lambda_4_11 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } diff --git a/tests/LambdaWithFunctionPointerTest.expect b/tests/LambdaWithFunctionPointerTest.expect index 73eca96e..225c3139 100644 --- a/tests/LambdaWithFunctionPointerTest.expect +++ b/tests/LambdaWithFunctionPointerTest.expect @@ -3,14 +3,14 @@ class __lambda_3_12 { public: template - inline /*constexpr */ auto operator()(int (*fp)(int), type_parameter_0_0 a) const + inline constexpr auto operator()(int (*fp)(int), type_parameter_0_0 a) const { return fp(a); } #ifdef INSIGHTS_USE_TEMPLATE template<> - inline /*constexpr */ int operator()(int (*fp)(int), int a) const + inline constexpr int operator()(int (*fp)(int), int a) const { return fp(a); } @@ -18,7 +18,7 @@ class __lambda_3_12 private: template - static inline /*constexpr */ auto __invoke(int (*fp)(int), type_parameter_0_0 a) + static inline constexpr auto __invoke(int (*fp)(int), type_parameter_0_0 a) { return __lambda_3_12{}.operator()(fp, a); } @@ -31,14 +31,14 @@ class __lambda_5_10 { public: template - inline /*constexpr */ auto operator()(type_parameter_0_0 a) const + inline constexpr auto operator()(type_parameter_0_0 a) const { return a; } #ifdef INSIGHTS_USE_TEMPLATE template<> - inline /*constexpr */ int operator()(int a) const + inline constexpr int operator()(int a) const { return a; } @@ -57,14 +57,14 @@ class __lambda_5_10 private: template - static inline /*constexpr */ auto __invoke(type_parameter_0_0 a) + static inline constexpr auto __invoke(type_parameter_0_0 a) { return __lambda_5_10{}.operator()(a); } #ifdef INSIGHTS_USE_TEMPLATE template<> - static inline /*constexpr */ int __invoke(int a) + static inline constexpr int __invoke(int a) { return __lambda_5_10{}.operator()(a); } diff --git a/tests/LambdaWithStaticInvokerTest.expect b/tests/LambdaWithStaticInvokerTest.expect index 3c2146e3..e1f572ab 100644 --- a/tests/LambdaWithStaticInvokerTest.expect +++ b/tests/LambdaWithStaticInvokerTest.expect @@ -72,14 +72,14 @@ class __lambda_25_16 { public: template - inline /*constexpr */ auto operator()(type_parameter_0_0 a) const + inline constexpr auto operator()(type_parameter_0_0 a) const { return a; } #ifdef INSIGHTS_USE_TEMPLATE template<> - inline /*constexpr */ int operator()(int a) const + inline constexpr int operator()(int a) const { return a; } @@ -98,14 +98,14 @@ class __lambda_25_16 private: template - static inline /*constexpr */ auto __invoke(type_parameter_0_0 a) + static inline constexpr auto __invoke(type_parameter_0_0 a) { return __lambda_25_16{}.operator()(a); } #ifdef INSIGHTS_USE_TEMPLATE template<> - static inline /*constexpr */ int __invoke(int a) + static inline constexpr int __invoke(int a) { return __lambda_25_16{}.operator()(a); } diff --git a/tests/MemberExprTemplateTest.expect b/tests/MemberExprTemplateTest.expect index 696dd39c..321c437c 100644 --- a/tests/MemberExprTemplateTest.expect +++ b/tests/MemberExprTemplateTest.expect @@ -29,7 +29,7 @@ void test(X x) class __lambda_10_5 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { x.f(17); x.ff(17, 2, 55.5); diff --git a/tests/MultipleLambdasInOneLineTest.expect b/tests/MultipleLambdasInOneLineTest.expect index b38d3e1a..4d5d62ae 100644 --- a/tests/MultipleLambdasInOneLineTest.expect +++ b/tests/MultipleLambdasInOneLineTest.expect @@ -6,7 +6,7 @@ int main() class __lambda_5_3 { public: - inline /*constexpr */ void operator()() const + inline void operator()() const { printf("Hello "); } @@ -18,7 +18,7 @@ int main() }; private: - static inline /*constexpr */ void __invoke() + static inline void __invoke() { __lambda_5_3{}.operator()(); } @@ -29,7 +29,7 @@ int main() class __lambda_5_33 { public: - inline /*constexpr */ void operator()() const + inline void operator()() const { printf("world"); } @@ -41,7 +41,7 @@ int main() }; private: - static inline /*constexpr */ void __invoke() + static inline void __invoke() { __lambda_5_33{}.operator()(); } diff --git a/tests/RangeForStmtHandlerTest.expect b/tests/RangeForStmtHandlerTest.expect index 4eb7de45..e083f31e 100644 --- a/tests/RangeForStmtHandlerTest.expect +++ b/tests/RangeForStmtHandlerTest.expect @@ -11,7 +11,7 @@ struct A class __lambda_10_38 { public: - inline /*constexpr */ int operator()() const + inline constexpr int operator()() const { return ++i; } @@ -36,7 +36,7 @@ struct B class __lambda_22_38 { public: - inline /*constexpr */ int operator()() const + inline constexpr int operator()() const { return ++i; } diff --git a/tests/ReplaceClangNamespaceTest.expect b/tests/ReplaceClangNamespaceTest.expect index b6b65576..b89e6a5b 100644 --- a/tests/ReplaceClangNamespaceTest.expect +++ b/tests/ReplaceClangNamespaceTest.expect @@ -14,7 +14,7 @@ int main() class __lambda_11_5 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { int x = mine::x; } @@ -26,7 +26,7 @@ int main() }; private: - static inline /*constexpr */ void __invoke() + static inline constexpr void __invoke() { __lambda_11_5{}.operator()(); } diff --git a/tests/StdInitializerList2Test.expect b/tests/StdInitializerList2Test.expect index 0c2cd0c7..34bdab8f 100644 --- a/tests/StdInitializerList2Test.expect +++ b/tests/StdInitializerList2Test.expect @@ -10,7 +10,7 @@ int main(int argc, const char **) class __lambda_10_17 { public: - inline /*constexpr */ std::initializer_list operator()() const + inline constexpr std::initializer_list operator()() const { return std::initializer_list(list); } @@ -25,7 +25,7 @@ int main(int argc, const char **) class __lambda_14_18 { public: - inline /*constexpr */ std::initializer_list operator()() const + inline constexpr std::initializer_list operator()() const { const int __list14_56[2]{i, x}; return std::initializer_list{__list14_56, 2}; diff --git a/tests/StructuredBindingsHandler7Test.expect b/tests/StructuredBindingsHandler7Test.expect index 9456dfb5..fbd3c98b 100644 --- a/tests/StructuredBindingsHandler7Test.expect +++ b/tests/StructuredBindingsHandler7Test.expect @@ -5,7 +5,7 @@ int main() class __lambda_4_5 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { char (&__buffer5)[2] = buffer; char & a = __buffer5[0]; diff --git a/tests/TemplateMemberFunctionTest.expect b/tests/TemplateMemberFunctionTest.expect index 977f270b..07ee1968 100644 --- a/tests/TemplateMemberFunctionTest.expect +++ b/tests/TemplateMemberFunctionTest.expect @@ -60,7 +60,7 @@ int main() class __lambda_33_10 { public: - inline /*constexpr */ void operator()() const + inline void operator()() const { printf("hello\n"); } @@ -72,7 +72,7 @@ int main() }; private: - static inline /*constexpr */ void __invoke() + static inline void __invoke() { __lambda_33_10{}.operator()(); } @@ -84,7 +84,7 @@ int main() class __lambda_35_18 { public: - inline /*constexpr */ void operator()() const + inline void operator()() const { printf("hello\n"); } @@ -96,7 +96,7 @@ int main() }; private: - static inline /*constexpr */ void __invoke() + static inline void __invoke() { __lambda_35_18{}.operator()(); } @@ -108,7 +108,7 @@ int main() class __lambda_37_21 { public: - inline /*constexpr */ void operator()() const + inline void operator()() const { printf("hello\n"); } @@ -120,7 +120,7 @@ int main() }; private: - static inline /*constexpr */ void __invoke() + static inline void __invoke() { __lambda_37_21{}.operator()(); } diff --git a/tests/TemplatesWithAutoAndLambdaTest.expect b/tests/TemplatesWithAutoAndLambdaTest.expect index 2a385728..3e7131ea 100644 --- a/tests/TemplatesWithAutoAndLambdaTest.expect +++ b/tests/TemplatesWithAutoAndLambdaTest.expect @@ -38,14 +38,14 @@ void print<' ', char[3], double, std::basic_string, { public: template - inline /*constexpr */ auto operator()(const type_parameter_0_0 & arg) const + inline constexpr auto operator()(const type_parameter_0_0 & arg) const { std::operator<<(std::cout, ' ') << arg; } #ifdef INSIGHTS_USE_TEMPLATE template<> - inline /*constexpr */ void operator()(const double & arg) const + inline constexpr void operator()(const double & arg) const { std::operator<<(std::cout, ' ').operator<<(arg); } @@ -54,7 +54,7 @@ void print<' ', char[3], double, std::basic_string, #ifdef INSIGHTS_USE_TEMPLATE template<> - inline /*constexpr */ void operator(), std::allocator > >(const std::basic_string, std::allocator > & arg) const + inline constexpr void operator(), std::allocator > >(const std::basic_string, std::allocator > & arg) const { std::operator<<(std::operator<<(std::cout, ' '), arg); } @@ -62,7 +62,7 @@ void print<' ', char[3], double, std::basic_string, private: template - static inline /*constexpr */ auto __invoke(const type_parameter_0_0 & arg) + static inline constexpr auto __invoke(const type_parameter_0_0 & arg) { return __lambda_11_28{}.operator()(arg); } diff --git a/tests/TypeAliasTest.expect b/tests/TypeAliasTest.expect index 327ca0a6..0089e0d6 100644 --- a/tests/TypeAliasTest.expect +++ b/tests/TypeAliasTest.expect @@ -4,7 +4,7 @@ int main() class __lambda_3_12 { public: - inline /*constexpr */ int operator()() const + inline constexpr int operator()() const { using mType = int; using xType = int; diff --git a/tests/VarTemplateWithLambdaTest.expect b/tests/VarTemplateWithLambdaTest.expect index b5545365..269d1c2b 100644 --- a/tests/VarTemplateWithLambdaTest.expect +++ b/tests/VarTemplateWithLambdaTest.expect @@ -23,14 +23,14 @@ class __lambda_8_23 { public: template - inline /*constexpr */ auto operator()(type_parameter_0_0 x) const + inline constexpr auto operator()(type_parameter_0_0 x) const { return double(x); } #ifdef INSIGHTS_USE_TEMPLATE template<> - inline /*constexpr */ double operator()(int x) const + inline constexpr double operator()(int x) const { return double(x); } @@ -38,7 +38,7 @@ class __lambda_8_23 private: template - static inline /*constexpr */ auto __invoke(type_parameter_0_0 x) + static inline constexpr auto __invoke(type_parameter_0_0 x) { return __lambda_8_23{}.operator()(x); } @@ -72,14 +72,14 @@ class __lambda_11_29 { public: template - inline /*constexpr */ auto operator()(type_parameter_0_0 x) const + inline constexpr auto operator()(type_parameter_0_0 x) const { return int{{x}}; } #ifdef INSIGHTS_USE_TEMPLATE template<> - inline /*constexpr */ int operator()(int x) const + inline constexpr int operator()(int x) const { return int{x}; } @@ -87,7 +87,7 @@ class __lambda_11_29 private: template - static inline /*constexpr */ auto __invoke(type_parameter_0_0 x) + static inline constexpr auto __invoke(type_parameter_0_0 x) { return __lambda_11_29{}.operator()(x); } diff --git a/tests/VisitorTest.expect b/tests/VisitorTest.expect index b75d0427..6a9b4ae4 100644 --- a/tests/VisitorTest.expect +++ b/tests/VisitorTest.expect @@ -10,10 +10,10 @@ template<> struct visitor<__lambda_8_7, __lambda_9_7> : public __lambda_8_7, public __lambda_9_7 { using __lambda_8_7::operator(); - // inline /*constexpr */ void ::operator()(int value) const; + // inline constexpr void ::operator()(int value) const; using __lambda_9_7::operator(); - // inline /*constexpr */ void ::operator()(const char * value) const; + // inline constexpr void ::operator()(const char * value) const; // inline constexpr visitor<__lambda_8_7, __lambda_9_7> & operator=(const visitor<__lambda_8_7, __lambda_9_7> &) /* noexcept */ = delete; // inline constexpr visitor<__lambda_8_7, __lambda_9_7> & operator=(visitor<__lambda_8_7, __lambda_9_7> &&) /* noexcept */ = delete; @@ -36,24 +36,24 @@ int main() class __lambda_8_7 { public: - inline /*constexpr */ void operator()(int value) const + inline constexpr void operator()(int value) const { } - // inline /*constexpr */ __lambda_8_7 & operator=(const __lambda_8_7 &) /* noexcept */ = delete; - // inline /*constexpr */ __lambda_8_7(__lambda_8_7 &&) noexcept = default; + // inline constexpr __lambda_8_7 & operator=(const __lambda_8_7 &) /* noexcept */ = delete; + // inline constexpr __lambda_8_7(__lambda_8_7 &&) noexcept = default; }; class __lambda_9_7 { public: - inline /*constexpr */ void operator()(const char * value) const + inline constexpr void operator()(const char * value) const { } - // inline /*constexpr */ __lambda_9_7 & operator=(const __lambda_9_7 &) /* noexcept */ = delete; - // inline /*constexpr */ __lambda_9_7(__lambda_9_7 &&) noexcept = default; + // inline constexpr __lambda_9_7 & operator=(const __lambda_9_7 &) /* noexcept */ = delete; + // inline constexpr __lambda_9_7(__lambda_9_7 &&) noexcept = default; }; visitor<__lambda_8_7, __lambda_9_7> my_visitor = visitor{__lambda_8_7(__lambda_8_7{}), __lambda_9_7(__lambda_9_7{})}; diff --git a/tests/p0195Test.expect b/tests/p0195Test.expect index 3168828a..f3763aca 100644 --- a/tests/p0195Test.expect +++ b/tests/p0195Test.expect @@ -10,10 +10,10 @@ template<> struct overload<__lambda_12_7, __lambda_13_7> : public __lambda_12_7, public __lambda_13_7 { using __lambda_12_7::operator(); - // inline /*constexpr */ void ::operator()(int &) const; + // inline constexpr void ::operator()(int &) const; using __lambda_13_7::operator(); - // inline /*constexpr */ void ::operator()(char &) const; + // inline constexpr void ::operator()(char &) const; // inline constexpr overload<__lambda_12_7, __lambda_13_7> & operator=(const overload<__lambda_12_7, __lambda_13_7> &) /* noexcept */ = delete; // inline constexpr overload<__lambda_12_7, __lambda_13_7> & operator=(overload<__lambda_12_7, __lambda_13_7> &&) /* noexcept */ = delete; @@ -37,7 +37,7 @@ int main() class __lambda_12_7 { public: - inline /*constexpr */ void operator()(int &) const + inline constexpr void operator()(int &) const { } @@ -48,21 +48,21 @@ int main() }; private: - static inline /*constexpr */ void __invoke(int & __param0) + static inline constexpr void __invoke(int & __param0) { __lambda_12_7{}.operator()(__param0); } public: - // inline /*constexpr */ __lambda_12_7 & operator=(const __lambda_12_7 &) /* noexcept */ = delete; - // inline /*constexpr */ __lambda_12_7(__lambda_12_7 &&) noexcept = default; + // inline constexpr __lambda_12_7 & operator=(const __lambda_12_7 &) /* noexcept */ = delete; + // inline constexpr __lambda_12_7(__lambda_12_7 &&) noexcept = default; }; class __lambda_13_7 { public: - inline /*constexpr */ void operator()(char &) const + inline constexpr void operator()(char &) const { } @@ -73,14 +73,14 @@ int main() }; private: - static inline /*constexpr */ void __invoke(char & __param0) + static inline constexpr void __invoke(char & __param0) { __lambda_13_7{}.operator()(__param0); } public: - // inline /*constexpr */ __lambda_13_7 & operator=(const __lambda_13_7 &) /* noexcept */ = delete; - // inline /*constexpr */ __lambda_13_7(__lambda_13_7 &&) noexcept = default; + // inline constexpr __lambda_13_7 & operator=(const __lambda_13_7 &) /* noexcept */ = delete; + // inline constexpr __lambda_13_7(__lambda_13_7 &&) noexcept = default; }; overload<__lambda_12_7, __lambda_13_7> ol = {__lambda_12_7(__lambda_12_7{}), __lambda_13_7(__lambda_13_7{})}; diff --git a/tests/p0315_2Test.expect b/tests/p0315_2Test.expect index 37b46fbd..5e1501c3 100644 --- a/tests/p0315_2Test.expect +++ b/tests/p0315_2Test.expect @@ -4,7 +4,7 @@ class __lambda_5_28 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } @@ -15,7 +15,7 @@ class __lambda_5_28 }; private: - static inline /*constexpr */ void __invoke() + static inline constexpr void __invoke() { __lambda_5_28{}.operator()(); } @@ -37,7 +37,7 @@ class Container class __lambda_11_27 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } @@ -48,7 +48,7 @@ class __lambda_11_27 }; private: - static inline /*constexpr */ void __invoke() + static inline constexpr void __invoke() { __lambda_11_27{}.operator()(); } @@ -64,7 +64,7 @@ static Container<__lambda_11_27, 2> c(); class __lambda_13_17 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } @@ -75,7 +75,7 @@ class __lambda_13_17 }; private: - static inline /*constexpr */ void __invoke() + static inline constexpr void __invoke() { __lambda_13_17{}.operator()(); } @@ -91,7 +91,7 @@ static __lambda_13_17 & f(); class __lambda_15_24 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } @@ -102,7 +102,7 @@ class __lambda_15_24 }; private: - static inline /*constexpr */ void __invoke() + static inline constexpr void __invoke() { __lambda_15_24{}.operator()(); } @@ -120,7 +120,7 @@ static void h(__lambda_15_24 *) class __lambda_17_24 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } @@ -131,7 +131,7 @@ class __lambda_17_24 }; private: - static inline /*constexpr */ void __invoke() + static inline constexpr void __invoke() { __lambda_17_24{}.operator()(); } @@ -145,7 +145,7 @@ class __lambda_17_24 class __lambda_17_43 { public: - inline /*constexpr */ int operator()() const + inline constexpr int operator()() const { return 2; } @@ -157,7 +157,7 @@ class __lambda_17_43 }; private: - static inline /*constexpr */ int __invoke() + static inline constexpr int __invoke() { return __lambda_17_43{}.operator()(); } diff --git a/tests/p0315_4Test.expect b/tests/p0315_4Test.expect index a6bf5af1..486e8047 100644 --- a/tests/p0315_4Test.expect +++ b/tests/p0315_4Test.expect @@ -6,7 +6,7 @@ struct Test class __lambda_5_13 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } @@ -17,7 +17,7 @@ struct Test }; private: - static inline /*constexpr */ void __invoke() + static inline constexpr void __invoke() { __lambda_5_13{}.operator()(); } @@ -32,7 +32,7 @@ struct Test class __lambda_7_29 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } @@ -43,7 +43,7 @@ struct Test } private: - static inline /*constexpr */ void __invoke() + static inline constexpr void __invoke() { __lambda_7_29{}.operator()(); } diff --git a/tests/p0315_5Test.cerr b/tests/p0315_5Test.cerr index 5cf5d2cb..7f2ae61d 100644 --- a/tests/p0315_5Test.cerr +++ b/tests/p0315_5Test.cerr @@ -1,7 +1,7 @@ .tmp.cpp:31:37: error: '__invoke' is a private member of '__lambda_7_32' 31 | static LambdaInNTTP<&__lambda_7_32::__invoke> lambdaInNTTP(); | ^ -.tmp.cpp:22:37: note: declared private here - 22 | static inline /*constexpr */ void __invoke() - | ^ +.tmp.cpp:22:32: note: declared private here + 22 | static inline constexpr void __invoke() + | ^ 1 error generated. diff --git a/tests/p0315_5Test.expect b/tests/p0315_5Test.expect index bf4422dc..0807a4a3 100644 --- a/tests/p0315_5Test.expect +++ b/tests/p0315_5Test.expect @@ -8,7 +8,7 @@ class LambdaInNTTP class __lambda_7_32 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } @@ -19,7 +19,7 @@ class __lambda_7_32 } private: - static inline /*constexpr */ void __invoke() + static inline constexpr void __invoke() { __lambda_7_32{}.operator()(); } diff --git a/tests/p0315_6Test.expect b/tests/p0315_6Test.expect index f6b0fa37..da0a0f21 100644 --- a/tests/p0315_6Test.expect +++ b/tests/p0315_6Test.expect @@ -2,7 +2,7 @@ class __lambda_3_47 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } @@ -13,7 +13,7 @@ class __lambda_3_47 } private: - static inline /*constexpr */ void __invoke() + static inline constexpr void __invoke() { __lambda_3_47{}.operator()(); } @@ -29,7 +29,7 @@ FuncPtr_3 a = (+__lambda_3_47{}.operator __lambda_3_47::retType_3_47()); class __lambda_5_16 { public: - inline /*constexpr */ void operator()() const + inline constexpr void operator()() const { } @@ -40,7 +40,7 @@ class __lambda_5_16 } private: - static inline /*constexpr */ void __invoke() + static inline constexpr void __invoke() { __lambda_5_16{}.operator()(); } diff --git a/tests/p0428Test.expect b/tests/p0428Test.expect index 5f753ab2..4185f21a 100644 --- a/tests/p0428Test.expect +++ b/tests/p0428Test.expect @@ -3,14 +3,14 @@ class __lambda_3_10 { public: template - inline /*constexpr */ auto operator()(T t, int i) const + inline constexpr auto operator()(T t, int i) const { return i; } #ifdef INSIGHTS_USE_TEMPLATE template<> - inline /*constexpr */ int operator()(int t, int i) const + inline constexpr int operator()(int t, int i) const { return i; } @@ -18,7 +18,7 @@ class __lambda_3_10 private: template - static inline /*constexpr */ auto __invoke(T t, int i) + static inline constexpr auto __invoke(T t, int i) { return __lambda_3_10{}.operator()(t, i); } diff --git a/tests/p0780Test.expect b/tests/p0780Test.expect index 5213ceec..e69c5dff 100644 --- a/tests/p0780Test.expect +++ b/tests/p0780Test.expect @@ -33,7 +33,7 @@ __lambda_13_12 delay_invoke(vo class __lambda_13_12 { public: - inline /*constexpr */ invoke_result_t operator()() const + inline constexpr invoke_result_t operator()() const { return std::invoke(f, __args1, __args2, __args3, __args4); } diff --git a/tests/p0780_2Test.cerr b/tests/p0780_2Test.cerr index 19302a21..1651349c 100644 --- a/tests/p0780_2Test.cerr +++ b/tests/p0780_2Test.cerr @@ -10,10 +10,10 @@ .tmp.cpp:32:1: error: unknown type name '__lambda_15_12' 32 | __lambda_15_12 delay_invoke(void (*f)(int, int, int, int), int __args1, int __args2, int __args3, int __args4) | ^ -.tmp.cpp:38:27: error: no template named 'invoke_result_t'; did you mean 'std::invoke_result_t'? - 38 | inline /*constexpr */ invoke_result_t operator()() const - | ^~~~~~~~~~~~~~~ - | std::invoke_result_t +.tmp.cpp:38:22: error: no template named 'invoke_result_t'; did you mean 'std::invoke_result_t'? + 38 | inline constexpr invoke_result_t operator()() const + | ^~~~~~~~~~~~~~~ + | std::invoke_result_t ... invoke.h:387:1: note: 'std::invoke_result_t' declared here 387 | using invoke_result_t = __invoke_result_t<_Fn, _Args...>; | ^ diff --git a/tests/p0780_2Test.expect b/tests/p0780_2Test.expect index aa8d7845..5aa9d85e 100644 --- a/tests/p0780_2Test.expect +++ b/tests/p0780_2Test.expect @@ -35,7 +35,7 @@ __lambda_15_12 delay_invoke(vo class __lambda_15_12 { public: - inline /*constexpr */ invoke_result_t operator()() const + inline constexpr invoke_result_t operator()() const { return std::invoke(f, __targs1, __targs2, __targs3, __targs4); } diff --git a/tests/p1102Test.expect b/tests/p1102Test.expect index be5ffda8..347a959d 100644 --- a/tests/p1102Test.expect +++ b/tests/p1102Test.expect @@ -3,7 +3,7 @@ int x = {3}; class __lambda_4_15 { public: - inline /*constexpr */ void operator()() + inline constexpr void operator()() { ++s2; } diff --git a/tests/p1169Test.expect b/tests/p1169Test.expect index d07369cd..4a781081 100644 --- a/tests/p1169Test.expect +++ b/tests/p1169Test.expect @@ -2,7 +2,7 @@ class __lambda_3_13 { public: - static inline /*constexpr */ int operator()() + static inline constexpr int operator()() { return 4; } diff --git a/tests/p2564Test.cpp b/tests/p2564Test.cpp new file mode 100644 index 00000000..c18dca1f --- /dev/null +++ b/tests/p2564Test.cpp @@ -0,0 +1,44 @@ +// cmdline:-std=c++23 + +consteval int id(int i) { return i; } +constexpr char id(char c) { return c; } + +template +constexpr int f(T t) { + return t + id(t); +} + +auto a = &f; // ok, f is not an immediate function + +static_assert(f(3) == 6); // ok + +template +constexpr int g(T t) { // g is not an immediate function + return t + id(42); // because id(42) is already a constant +} + +template +constexpr bool is_not(T t, F f) { + return not f(t); +} + +consteval bool is_even(int i) { return i % 2 == 0; } + +static_assert(is_not(5, is_even)); // ok + +int x = 0; + +template +constexpr T h(T t = id(x)) { // h is not an immediate function + return t; +} + +template +constexpr T hh() { // hh is an immediate function + return h(); +} + +struct A { + int x; + int y = id(x); +}; diff --git a/tests/p2564Test.expect b/tests/p2564Test.expect new file mode 100644 index 00000000..c5290335 --- /dev/null +++ b/tests/p2564Test.expect @@ -0,0 +1,88 @@ +inline consteval int id(int i) +{ + return static_cast(i); +} +inline constexpr char id(char c) +{ + return static_cast(c); +} + +template +inline constexpr int f(T t) +{ + return t + id(t); +} + +#ifdef INSIGHTS_USE_TEMPLATE +template<> +inline constexpr int f(char t) +{ + return static_cast(t) + static_cast(id(t)); +} +#endif + + +/* First instantiated from: p2564Test.cpp:13 */ +#ifdef INSIGHTS_USE_TEMPLATE +template<> +inline consteval int f(int t) +{ + return t + id(t); +} +#endif + + +using FuncPtr_11 = int (*)(char); +FuncPtr_11 a = &f; + +/* PASSED: static_assert(f(3) == 6); */ + +template +inline constexpr int g(T t) +{ + return t + id(42); +} + +template +inline constexpr bool is_not(T t, F f) +{ + return !f(t); +} + +/* First instantiated from: p2564Test.cpp:27 */ +#ifdef INSIGHTS_USE_TEMPLATE +template<> +inline constexpr bool is_not(int t, bool (*f)(int)) +{ + return !f(t); +} +#endif + + +inline consteval bool is_even(int i) +{ + return (i % 2) == 0; +} + +/* PASSED: static_assert(is_not(5, is_even)); */ + +int x = 0; + +template +inline constexpr T h(T t) +{ + return static_cast(t); +} + +template +inline constexpr T hh() +{ + return h(); +} + +struct A +{ + int x; + int y = id(this->x); +}; + diff --git a/tests/p2662Test.expect b/tests/p2662Test.expect index c77cf938..3daa47ff 100644 --- a/tests/p2662Test.expect +++ b/tests/p2662Test.expect @@ -21,7 +21,7 @@ class __lambda_12_12 { public: template - inline /*constexpr */ auto operator()(type_parameter_0_0... pack) const + inline constexpr auto operator()(type_parameter_0_0... pack) const { decltype(pack...[0]) x5; decltype((pack...[0])) x6 = {x5}; @@ -30,7 +30,7 @@ class __lambda_12_12 #ifdef INSIGHTS_USE_TEMPLATE template<> - inline /*constexpr */ int operator()(int __pack0, double __pack1, char __pack2) const + inline constexpr int operator()(int __pack0, double __pack1, char __pack2) const { int x5; int & x6 = {x5}; @@ -40,7 +40,7 @@ class __lambda_12_12 private: template - static inline /*constexpr */ auto __invoke(type_parameter_0_0... pack) + static inline constexpr auto __invoke(type_parameter_0_0... pack) { return __lambda_12_12{}.operator()(pack...); }