gpt4 book ai didi

c++ - 这个 OpenFST 函数中的 `Read` 来自哪里?

转载 作者:行者123 更新时间:2023-11-28 04:26:08 25 4
gpt4 key购买 nike

(菜鸟警告——我不是真正的 C++ 程序员,只是发现自己需要用 Java 重新实现一些 C++ 代码。)

我试图理解 the following function来自 OpenFST,作为在 JOpenFST 中启用 OpenFST 二进制文件读取工作的一部分:

template <class T,
typename std::enable_if<std::is_class<T>::value, T>::type* = nullptr>
inline std::istream &ReadType(std::istream &strm, T *t) {
return t->Read(strm);
}

我无法确定此模板声明中的内容保证 t 上存在 Read。我意识到我对 enable_ifis_class 的理解是模糊的,但我不知道有什么可以提供这样的方法。

也许它来自更广泛的背景?为所有类类型声明 Read 的东西???以下是该函数所在的 util.h 中的导入:

#include <iostream>
#include <iterator>
#include <list>
#include <map>
#include <set>
#include <sstream>
#include <string>
#include <type_traits>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>

#include <fst/compat.h>
#include <fst/types.h>
#include <fst/log.h>
#include <fstream>

#include <fst/flags.h>
#include <unordered_map>

感谢您对困惑的 Java 开发人员的耐心等待。

最佳答案

I can't determine what in this template declaration guarantees the existence of Read on t.

没有什么能保证存在。

也就是说:如果模板是用一个没有Read成员函数的T实例化的,那么编译器会提示一个不存在的函数是打电话。

从另一个角度来看,除非 T::Read 存在(并且可以用给定的参数调用),否则模板格式错误这一事实保证了 T 在任何情况下形成的模板实例化将具有这样的成员。

关于c++ - 这个 OpenFST 函数中的 `Read` 来自哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54271751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com