小编Ame*_*nde的帖子

__uint128_t 的 std::hash

我面临着散列问题__uint128_t。以下是我的代码:

\n
#include <iostream>\n\nint main () {\n    __uint128_t var = 1;\n    std::cout << std::hash<__uint128_t> () (var) << "\\n";\n    return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我收到的错误如下:

\n
test.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      |                                        ^\n
Run Code Online (Sandbox Code Playgroud)\n

我如何获得 的哈希值__uint128_t?(可能是一个非常基本的问题,但我已经被困在这里一段时间了)。另外,我想知道这个错误的含义。提前致谢。

\n

c++ c++11

2
推荐指数
1
解决办法
1212
查看次数

c++:分别处理不同的模板参数

我有一个程序如下(这是我实际问题的再现):

#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)

c++ c++17

2
推荐指数
1
解决办法
76
查看次数

C++:绕过依赖模板的方法

我有一个这样的类模板:

    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作为参数写同一个类?如果是,如何?

c++ c++11 c++14

0
推荐指数
1
解决办法
107
查看次数

标签 统计

c++ ×3

c++11 ×2

c++14 ×1

c++17 ×1