我面临着散列问题__uint128_t。以下是我的代码:
#include <iostream>\n\nint main () {\n __uint128_t var = 1;\n std::cout << std::hash<__uint128_t> () (var) << "\\n";\n return 0;\n}\nRun Code Online (Sandbox Code Playgroud)\n我收到的错误如下:
\ntest.cpp: In function \xe2\x80\x98int main()\xe2\x80\x99:\ntest.cpp:5:40: error: use of deleted function \xe2\x80\x98std::hash<__int128 unsigned>::hash()\xe2\x80\x99\n 5 | size_t h = std::hash<__uint128_t> () (var);\n | ^\nRun Code Online (Sandbox Code Playgroud)\n我如何获得 的哈希值__uint128_t?(可能是一个非常基本的问题,但我已经被困在这里一段时间了)。另外,我想知道这个错误的含义。提前致谢。
我有一个程序如下(这是我实际问题的再现):
#include <iostream>
class A {
public:
void printA () {
std::cout << "AA" << std::endl;
}
};
class B {
public:
void printB () {
std::cout << "BB" << std::endl;
}
};
template <typename T>
class C {
public:
void printC () {
T obj;
if (std::is_same<A, T>::value) {
obj.printA ();
} else if (std::is_same<B, T>::value) {
obj.printB ();
}
}
};
int main () {
C<A> c1;
C<B> c2;
c1.printC ();
c2.printC ();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在编译时,我收到以下错误:
handle_different_typenames.cpp: …Run Code Online (Sandbox Code Playgroud) 我有一个这样的类模板:
template <typename T1, typename T2>
class ClassName {
// Members variables and Functions based on the template parameter types
};
Run Code Online (Sandbox Code Playgroud)
(T1, T2)可以是(class A, class B)或(class C, class D)仅。因此,仅 T1 就足以确定 T2。有没有什么办法只把T1作为参数写同一个类?如果是,如何?