(这里是新手警告——我并不是真正的 C++ 程序员,只是发现自己需要用 Java 重新实现一些 C++ 代码。)
我试图从 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);
}
我无法确定此模板声明中的哪些内容保证了Read
on的存在t
。我意识到我的理解enable_if
很is_class
模糊,但我看不出有什么可以提供这样的方法。
也许它来自更广泛的背景?Read
为所有类类型声明 a 的东西???以下是该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 开发人员的耐心等待。