C++0x で関数ポインタ型を定義

alias declaration(Template Aliases) が実装されていれば using を使用して、わかりやすく関数ポインタ型を定義できるので試してみたました。

[ソース]

#include <boost/mpl/assert.hpp>
#include <boost/type_traits/is_same.hpp>
#include <iostream>

using func_type = int(*)(int, int);
// typedef int(*func_type)(int, int);   // C++03 だとわかりづらい書き方だった

int
plus(int a, int b){
    return a + b;
}

BOOST_MPL_ASSERT(( boost::is_same<func_type, decltype(&plus)> ));

int
main(){
    func_type f = plus;
    std::cout << f(10, 2) << std::endl;
    return 0;
}

[出力]

12