c++ - 是否可以使用 decltype 来确定前向声明模板类的成员函数的返回类型?

标签 c++ c++11

我有一个前向声明的类,我希望能够在无法访问定义的头文件中找出该类的成员函数的返回类型。我可以做这样的事情,同时只在我的标题中包含前向减速吗?下面是一个在头文件可以访问定义的情况下有效的示例,但我想避免在我的头文件中包含这些定义:

// file name Matrix.hpp
#include<utility>
#include "array.hpp" // I would like to remove this include

template<typename T, unsigned int N>
class Array;

using MatrixD = Array<double, 2>; 
using return_type = decltype(std::decval<MatrixD>().operator()("i,j"));

class Array_User{
public:
    virtual return_type Array_op(const std::string);
    ... Rest of class 
};

最佳答案

前向声明意味着您知道类(或类模板)存在,而不是它包含的内容。由此,显然不可能得到任何成员的信息,包括成员函数。

关于c++ - 是否可以使用 decltype 来确定前向声明模板类的成员函数的返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23584107/

相关文章:

c++ - C++ 中的广义极值分布 (GEV)

c++ - C++11 中友元模板类的 Visual C++ 错误

c++ - 使用指向在 "if"语句中声明的变量地址的指针是否可以

c++ - 64位系统的优点

c++ - 这个收购围栏是否被观察到?

std::map::insert 处的 C++ 段错误

c++ - 如何使我自己的容器建立索引并可分配

c++ - 结构中的数组

c++ - 函数调用顺序错误

c++ - Boost.Intrusive 和 unordered_map