小编Tay*_*lor的帖子

使用嵌套模板进行模板化

以下代码不起作用,因为推断模板参数F是std::tuple,而我希望它是Foo- 前者采用两个模板参数,后者采用一个.

#include <tuple>

template <typename T>
using Foo = std::tuple<int, T>;

template <template <typename> class F>
void foo(F<std::string> bar) {}

void test() {
  foo(Foo<std::string>());
}
Run Code Online (Sandbox Code Playgroud)

有没有办法让类型推断与using语句一起工作而不是Foo变成它自己的类?

#include <tuple>

template <typename T>
class Foo {
  std::tuple<int, T> bar;
};

template <template <typename> class F>
void foo(F<std::string> bar) {}

void test() {
  foo(Foo<std::string>());
}
Run Code Online (Sandbox Code Playgroud)

更多信息

我正在使用C++ 17 std::variant以及在单个类型上使用别名类型的别名,我宁愿用using语句声明这些,而不是为每个语句创建包装类.像这样的东西:

// Assuming Plus, Minus, etc all exist
template <typename T>
using Operation …
Run Code Online (Sandbox Code Playgroud)

c++ templates type-alias

5
推荐指数
1
解决办法
97
查看次数

未定义的对专用模板成员的引用

我有一个由模板模板类参数化的类,它具有静态成员函数:

template <template <typename> class F>
struct A {
  static int foo();
};
Run Code Online (Sandbox Code Playgroud)

此类没有默认定义foo,必须专门针对不同类型.

我还有一个带有嵌套模板类的模板模板类参数化的另一个类:

template <template <typename> class F>
struct B {
  template <typename T>
  struct C {};
};
Run Code Online (Sandbox Code Playgroud)

我想C专门A用于任何模板模板类F,专门A不已:

template <template <typename> class F>
struct A<B<F>::template C> {
  static int foo();
};

template <template <typename> class F>
int A<B<F>::template C>::foo() {
  return A<F>::foo() / 2;
}
Run Code Online (Sandbox Code Playgroud)

所以,如果我有一个专门的课程A:

template <typename T>
struct E {};

template <>
int …
Run Code Online (Sandbox Code Playgroud)

c++ templates partial-specialization template-templates

4
推荐指数
1
解决办法
123
查看次数