C++03向け局所関数
まぁ誰でも思いつくような奴だけど忘れない様にメモ
https://github.com/Flast/trance/blob/master/trance/local_function.hpp
#define PP_CAT( x, y ) x ## y #define FUNCTOR_NAME PP_CAT( _unnamed_local_function, __LINE__ ) #define LOCAL_FUNCTION( _lf_return, _lf_function, _lf_args, _lf_body ) \ struct FUNCTOR_NAME \ { \ static _lf_return _function _lf_args _lf_body \ }; \ _lf_return ( &_lf_function ) _lf_args = FUNCTOR_NAME::_function; \ #include <iostream> int main( void ) { LOCAL_FUNCTION( void, function, ( const char *str ), { std::cout << str << std::endl; } ) function( "local function" ); }
まぁ0xな世の中にはいらない子でしょうが03が必要な場合もまだあるので...
Boost.Utilityとかに入っててもいいような内容な気がするんだけどどうだろ
値のキャプチャとかできないこと考えるとあんま意味ないな...
まぁanonymous namespaceも完全じゃないからこういうのもあったほうがいいのかな、namespaceを汚さない的な意味では