小编Bor*_*ris的帖子

在C++中混淆模板17 std :: visit的例子

std::visit()在cppreference中查看页面时,https: //en.cppreference.com/w/cpp/utility/variant/visit, 我遇到了我无法理解的代码......

这是缩写版本:

#include <iomanip>
#include <iostream>
#include <string>
#include <type_traits>
#include <variant>
#include <vector>

template<class... Ts> struct overloaded : Ts... { using Ts::operator()...; };
template<class... Ts> overloaded(Ts...)->overloaded<Ts...>;

int main() {
    std::vector<std::variant<int,long,double,std::string>> vec = { 10, 15l, 1.5, "hello" };
    for (auto& v : vec) {
        std::visit(overloaded{
            [](auto arg) { std::cout << arg << ' '; },
            [](double arg) { std::cout << std::fixed << arg << ' '; },
            [](const std::string& arg) { std::cout << std::quoted(arg) << …
Run Code Online (Sandbox Code Playgroud)

c++ lambda variadic-templates generic-lambda c++17

33
推荐指数
2
解决办法
2168
查看次数

多线程 WebAssembly 在浏览器中比单线程慢,为什么?

几年没有使用 Emscripten 后,我最近发现它现在支持将多线程 C++ 代码编译为 WebAssembly。我已经编写了简单的合并排序代码,可以对 1000 万个浮点进行排序(本机代码可以轻松地对更多浮点进行排序,但浏览器似乎将您限制为 1GB 内存):

https://github.com/bsergeev/MtMergeSort

令人惊讶的是,虽然这段代码编译为 WebAssembly 并在 Chrome 中运行,但由于使用了多个线程,浏览器中的排序速度变得越来越慢(而单线程性能,正如预期的那样,是本机性能的 1.5...2 倍:本机代码1.80 秒,WebAssembly 3.1...3.3 秒,JavaScript 4.69 秒):

x64、WebAssembly 和 JavaScript 的比较

多线程性能下降是否是由于浏览器限制 WebWorkers 造成的?那么 WebAssembly 中的多线程有什么意义呢?

c++ multithreading emscripten webassembly

4
推荐指数
1
解决办法
2257
查看次数

被简单的C++多继承示例所困扰

我一直在查看C++核心指南项目C.129并复制粘贴了一个多继承示例,但无法弄清楚为什么MS编译器和CLang都会向我显示相同的错误...它必须非常简单!

代码:

    class Shape { // pure interface
    public:
        virtual void draw() = 0;
    };
    class Circle : public Shape { // pure interface
    public:
        virtual int radius() = 0;
    };

    class Shape_Impl : public Shape {
    public:
        void draw() override {}
    };
    class Circle_Impl : public Shape_Impl, public Circle {
    public:
        int radius() override { return 42; }
    };

    int main()
    {
        Circle_Impl* ic = new Circle_Impl();
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

为什么Circle_Impl在"Circle_Impl"错误中使用"未实现的纯虚方法'绘制' 实例化失败?" 还没有draw实现在被定义 …

c++ inheritance multiple-inheritance

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