错误C2079'std :: pair <Dummy <int>,Dummy <int >> :: first'使用未定义的类'Dummy <int>'

时间:2019-11-15 06:48:28

标签: c++ visual-studio visual-studio-2019

以下代码段可以在C ++ 11/14/17标准下使用GCC 9.1和Clang 6.0很好地进行编译,但是拒绝使用Visual Studio 2019进行编译。我可以将getDummies()的返回值更改为{{ 1}}和VS将使用C ++ 14/17标准进行编译,但这会破坏所有编译器的C ++ 11兼容性,这是我需要保持的。

auto

1 个答案:

答案 0 :(得分:1)

在类内部定义Dummy函数时,类getDummies()尚未完全定义。

您可以在类中声明该函数,然后在类外对其进行定义,例如:

template<typename T>
class Dummy
{
public:
    static std::pair<Dummy<int>, Dummy<int>> getDummies();
};

template<typename T>
std::pair<Dummy<int>, Dummy<int>> Dummy<T>::getDummies()
{
    return std::make_pair(Dummy<int>{}, Dummy<int>{});
}