Art*_*syn 3 c++ templates boost-mpl
我有以下"主"模板:
template <
template <typename> class S
> struct TT { /*...*/ };
Run Code Online (Sandbox Code Playgroud)
和我想要使用的模板TT:
template <int N, typename T> struct S1 {};
Run Code Online (Sandbox Code Playgroud)
特别是,我想使用类似的东西
TT< S1<5> > t2; // "Invalid template arguments" here
Run Code Online (Sandbox Code Playgroud)
它是模板的一种部分应用.我知道Boost.MPL涉及这种东西.问题是我已经有一些使用TT和模板的代码了
template <typename T> struct S2 {}; // S3, S4…
Run Code Online (Sandbox Code Playgroud)
它被送到TT.
所以,问题是:我怎么能使用S1与TT具有最小的修改现有的代码.如果必须使用Boost.MPL,请告诉我最合适的解决方案.
定义一个派生自以下的类模板S1:
template <typename T>
struct S11 : S1<5,T>
{
};
Run Code Online (Sandbox Code Playgroud)
然后使用S11,而不是S1:
TT< S11> t2; //it is as if TT< S1<5> > t2
Run Code Online (Sandbox Code Playgroud)
工作代码:http://ideone.com/y2s7n
阅读你的评论,似乎你需要这个:
template<int N>
struct Magic
{
template <typename T>
struct S11 : S1<N,T>
{
};
};
//Usage
TT<Magic<5>::S11> t2;
Run Code Online (Sandbox Code Playgroud)
魔术演示:http://ideone.com/4yxvK
| 归档时间: |
|
| 查看次数: |
625 次 |
| 最近记录: |