Tag: 模板别名

我可以使用模板别名作为模板模板参数吗?

我可以使用模板别名作为模板模板参数吗? template <template <typename…> class> struct foo {}; template <typename T> using simple_ptr = std::unique_ptr<T>; foo<std::unique_ptr> a; // this doesn't work, std::unique_ptr has two parameters foo<simple_ptr> b; // does this work?

为什么别名模板给出了相冲突的声明?

从Clang到g ++的一些C ++ 11代码的端口 template<class T> using value_t = typename T::value_type; template<class> struct S { using value_type = int; static value_type const C = 0; }; template<class T> value_t<S<T>> // gcc error, typename S<T>::value_type does work const S<T>::C; int main() { static_assert(S<int>::C == 0, ""); } 为Clang(版本3.1至SVN中继)与任何g ++版本提供不同的行为。 对于后者,我得到这样的错误 prog.cc:13:13: error: conflicting declaration 'value_t<S<T> > […]