マクロに型を渡す
- テンプレートを利用した型はコンマで区切られていることがあるので([id:Cryolite:20050326])を使うのだが、const修飾が消える (13.1/3)
- VC++7.1は消えないので注意
- コンマを保護するマクロを呼ぶのはユーザの責任になる
- こうすればどうだろう (実装)
- affectは、([id:y-hamigaki:20060726])のために生まれたのだが、使いどころが多くて基本的なものだと分かってきた
- たとえば、Boost.Tupleのaccess_traitsは要らなくなる
[]#include[] []<utility>[]
[]#include[] []<pstade/unparenthesize.hpp>[]
[]#define[][] FOO(T, V, f, s) T V(f, s);[][]#define[][] BAR(T, V, f, s) PSTADE_UNPARENTHESIZE(T) V(f, s);[]
[]void[] []test[][]()[]
[]{[]
[]FOO[][]([][]const[] []PSTADE_UNPARENTHESIZE[][](([][]std[][]::[][]pair[][]<[][]int[][],[][]int[][]>)), [][]p1[][], [][]1[][], [][]2[][])[]
[]BAR[][]([][]const[][] ([][]std[][]::[][]pair[][]<[][]int[][],[][]int[][]>), [][]p2[][], [][]1[][], [][]2[][])[][]BOOST_CHECK[][]([][]p1[][] == [][]p2[][]);[]
[]}[]