ntor
0
Hey Leute!
Ich wollte mir gerade eine bequeme Funktion schreiben um auch C-structs als temporäre Objekte zu übergeben.
Bsp:
Und habe mir erhofft , dass die Funktion so funktionieren würde:
Als Vorbild habe ich mir die std::bind-Funktion aus der C++-<functional> Library genommen.
Leider lässt mein MinGW(4.6.1) das nicht durchgehen:
Habt ihr schon mal eine elegante Lösung für sowas fabriziert ?
Hier ein etwas uneleganter (und exe-aufblähender(?)) workaround:
Herzliche Grüße
nt0r
Ich wollte mir gerade eine bequeme Funktion schreiben um auch C-structs als temporäre Objekte zu übergeben.
Bsp:
Code:
RectCollsion(rect_1,Construct<SDL_Rect>(50,50,10,10));
Code:
template<typename T,typename... var_type_list> inline const T& Construct(var_type_list... var_list)
{
T ret_val = {var_list};
return ret_val;
}
Leider lässt mein MinGW(4.6.1) das nicht durchgehen:
C:\Meine_Daten\Dropbox\Coding\SDL\SDL_Snake\util.h||In function 'const T& Construct(type_list ...)':|
C:\Meine_Daten\Dropbox\Coding\SDL\SDL_Snake\util.h|9|error: parameter packs not expanded with '...':|
C:\Meine_Daten\Dropbox\Coding\SDL\SDL_Snake\util.h|9|note: 'var_list'|
||=== Build finished: 2 errors, 0 warnings ===|
C:\Meine_Daten\Dropbox\Coding\SDL\SDL_Snake\util.h|9|error: parameter packs not expanded with '...':|
C:\Meine_Daten\Dropbox\Coding\SDL\SDL_Snake\util.h|9|note: 'var_list'|
||=== Build finished: 2 errors, 0 warnings ===|
Habt ihr schon mal eine elegante Lösung für sowas fabriziert ?
Hier ein etwas uneleganter (und exe-aufblähender(?)) workaround:
Code:
#define CONSTRUCT(struct_name,...) \
([](void) \
{ \
struct_name ret_val = {__VA_ARGS__}; \
return ret_val; \
})();
Herzliche Grüße
nt0r
Zuletzt bearbeitet: