История изменений
Исправление
wota,
(текущая версия)
:
Напиши такой же макрос с помощью stl
#define insert_unique( tbl, ... ) \
[__VA_ARGS__]() \
{ \
string query = string("INSERT INTO `") + tbl + "`(" + #__VA_ARGS__ + ") VALUES (" + join(__VA_ARGS__); \
return db_->execute( query ).id; \
}();
#define mk_host(...) insert_unique( "host", __VA_ARGS__ )
вероятно как-то так, но я б так не писал, просто потому-что завязываться на имя переменной - неправильно и чревато ошибками, я б жестко забил имена в структуру:
host h;
h.name = "localhost";
h.port = 80;
int id = mk_host( h );
или
int id = mk_host( { "localhost", 80 } );
если таки хочется сэкономить на коде
Исправление
wota,
:
Напиши такой же макрос с помощью stl
#define insert_unique( tbl, ... ) \
[__VA_ARGS__]()
{
string query = string("INSERT INTO `") + tbl + "`(" + #__VA_ARGS__ + ") VALUES (" + join(__VA_ARGS__);
return db_->execute( query ).id;
}();
#define mk_host(...) insert_unique( "host", __VA_ARGS__ )
вероятно как-то так, но я б так не писал, просто потому-что завязываться на имя переменной - неправильно и чревато ошибками, я б жестко забил имена в структуру:
host h;
h.name = "localhost";
h.port = 80;
int id = mk_host( h );
или
int id = mk_host( { "localhost", 80 } );
если таки хочется сэкономить на коде
Исходная версия
wota,
:
Напиши такой же макрос с помощью stl
#define insert_unique( tbl, ... ) \
[__VA_ARGS__]()
{
string query = string("INSERT INTO `") + tbl + "`(" + #__VA_ARGS__ + ") VALUES (" + join(__VA_ARGS__);
return db_->execute( query ).id;
}();
#define mk_host(...) insert_unique( "host", __VA_ARGS__ )
вероятно как-то так, но я б так не писал, просто потому-что завязываться на имя переменной - неправильно и чревато ошибками, я б жестко забил имена в структуру:
host h;
h.name = "localhost";
h.port = 80;
int id = mk_host( h );
или
host h;
h.name = "localhost";
h.port = 80;
int id = mk_host( { "localhost", 80 } );
если таки хочется сэкономить на коде