にゃははー

はへらー

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を汚さない的な意味では