小编dol*_*tes的帖子

在泛型类之外定义函数会产生编译错误

上下文

我写了以下最小的工作示例

#include <iostream>

template <typename T>
struct A {
  enum myenum {faa, fee, fii};
  myenum m_m;
  A(const myenum& m = faa): m_m(m) {}
};

int main() {
  A<int> a1;
  A<int> a2(A<int>::fii);

  std::cout << a1.m_m << std::endl
            << a2.m_m << std::endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译并执行它会导致

$ g++ main.cpp && ./a.out
0
2
Run Code Online (Sandbox Code Playgroud)

问题

但是,当函数的定义写在类之外时(即如下图)

#include <iostream>

template <typename T>
struct A {
  enum myenum {faa, fee, fii};
  myenum m_m;
  A(const myenum& m);
};

template <typename T>
A<T>::A(const myenum& m = …
Run Code Online (Sandbox Code Playgroud)

c++ templates default-arguments

3
推荐指数
1
解决办法
35
查看次数

标签 统计

c++ ×1

default-arguments ×1

templates ×1