среда, 21 августа 2013 г.

macros-function

macros-function
/** В #gcc есть возможность писать макросы, возвращающие значения: */

#define STR(WHAT) ({ std::stringstream e; e << WHAT; e.str(); })

/** Этот макрос получает строку, например: STR(33 << 44) получит
    строку "3344". В Visual Studio это было сделать нельзя. Благодаря
    стандарту c++11 сейчас можно написать макрос, который будет делать
    это же: */
#define STR(WHAT) ([]() -> std::string { std::stringstream e; e << WHAT; return e.str(); }())

/** Но с появлением variadic templates в c++11 вряд ли это уже будет нужно. */

Комментариев нет:

Отправить комментарий