Ggi*_*cci 3 c++ macros templates template-meta-programming
这是我的代码.
#define mp_eval(Func) Func::value
template<int L, int R>
struct StaticMinimum
{
static const int value = (L < R) ? L : R;
};
// Error: too few arguments for class template "StaticMinimum"
cout << mp_eval(StaticMinimum<9, 12>) << endl;
Run Code Online (Sandbox Code Playgroud)
是不是mp_eval(StaticMinimum<9, 12>)被StaticMinimum<9, 12>::value编译器替换了?我想我一定会错过一些东西.请让我知道发生了什么.
小智 6
使用macro(mp_eval(StaticMinimum<9, 12>))时的逗号被解析为参数分隔符.
宏可以固定为:
#define mp_eval(...) __VA_ARGS__::value
Run Code Online (Sandbox Code Playgroud)
在C++ 1y中,您可以使用变量模板而不是宏.
| 归档时间: |
|
| 查看次数: |
1667 次 |
| 最近记录: |