假设我有一个模板:
template<typename T>
struct Outer {
template<typename T1>
struct Inner {
};
};
我想要一个别名模板Alias
:
template<typename T>
using Alias = Outer<T>::template Inner; // this won't work
using IntOuter = Alias<int>;
所以IntOuter<double>
与 Outer<int>::template Inner<double>
相同.你如何定义Alias
?或者有可能吗?
编辑:
我希望能够创建 SomeOuter
在飞行中,因此对于模板 foo:
template<template<typename> class>
struct Foo {
};
Foo<Alias<int>>
与 Foo<Outer<int>::template Inner>
相同
或者做这样的事情:
template<typename T>
using SomeFoo = Foo<Alias<T>>;
最佳答案
你可以
template<typename T, typename T1>
using Alias = typename Outer<T>::template Inner<T1>;
template<typename T1>
using IntOuter = Alias<int, T1>;
或者直接
template<typename T1>
using IntOuter = Outer<int>::Inner<T1>;
然后为 IntOuter<double>
你会得到Outer<int>::Inner<double>
.
关于c++ - 成员模板的别名模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55997818/