#include <iostream>
#include <mutex>
using namespace std;
std::once_flag flag;
template<typename ...Args>
void gFunc(Args... args)
{
}
template<typename ...Args>
void func(Args... args)
{
auto lm = [&, args...]
{
// more code here
return gFunc(args...);
};
std::call_once(flag,lm);
}
int main() {
// your code goes here
func(1);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bXV0ZXg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdGQ6Om9uY2VfZmxhZyBmbGFnOwoKdGVtcGxhdGU8dHlwZW5hbWUgLi4uQXJncz4Kdm9pZCBnRnVuYyhBcmdzLi4uIGFyZ3MpCnsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgLi4uQXJncz4Kdm9pZCBmdW5jKEFyZ3MuLi4gYXJncykKewoJYXV0byBsbSA9IFsmLCBhcmdzLi4uXSAKCSAgICAgICAgICB7CgkgICAgICAgICAgCS8vIG1vcmUgY29kZSBoZXJlCgkgICAgICAgICAgICByZXR1cm4gZ0Z1bmMoYXJncy4uLik7CgkgICAgICAgICAgfTsKICAgIHN0ZDo6Y2FsbF9vbmNlKGZsYWcsbG0pOwp9CgppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCWZ1bmMoMSk7CglyZXR1cm4gMDsKfQ==
prog.cpp: In function ‘void func(Args ...)’:
prog.cpp:15:20: error: expected ‘,’ before ‘...’ token
auto lm = [&, args...]
^
prog.cpp:15:20: error: expected identifier before ‘...’ token
prog.cpp:15:23: error: parameter packs not expanded with ‘...’:
auto lm = [&, args...]
^
prog.cpp:15:23: note: ‘args’
prog.cpp: In lambda function:
prog.cpp:18:31: error: expansion pattern ‘args’ contains no argument packs
return gFunc(args...);
^
prog.cpp: In instantiation of ‘struct func(Args ...) [with Args = {int}]::__lambda0’:
prog.cpp:19:12: required from ‘void func(Args ...) [with Args = {int}]’
prog.cpp:25:8: required from here
prog.cpp:15:16: error: using invalid field ‘func(Args ...)::__lambda0::__args’
auto lm = [&, args...]
^