小编Mat*_*nti的帖子

Constexpr强制转换为const char []

它发生在很多人身上,它发生在我身上.我在C++中使用编译时间字符串时遇到困难.

我决定采取看似无法使用的方法:使用template <char...>类.

这就是我提出的,它是非常常见的,没什么特别的,它也不起作用.

template <char... chars> class string
{
public:

    static constexpr const char value[] = {chars...};

    constexpr string()
    {
    }

    constexpr operator decltype(value) & () const
    {
        return value;
    }
};

template <char... chars> constexpr const char string <chars...> :: value[];
Run Code Online (Sandbox Code Playgroud)

我的想法是使一个string实例可constexpr构造并暴露某种constexpr转换,以便它提供其内容.

现在,如果我这样做

static constexpr const char x[] = "ciao";

template <const char * str> void print()
{
    std :: cout << str << std :: endl;
}

print <x> ();
Run Code Online (Sandbox Code Playgroud)

这有效并且说 …

c++ templates char constexpr

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

有没有人有工作的GMP + MINGW安装?

我花了几天时间尝试在MINGW windows安装上安装GMP库.我完成了几十次的安装过程,遵循互联网上的任何单一指南,但我无法让事情发挥作用.所以,我迫不及待地请某人帮助我强行解决这个问题:是否有人在GMP上成功构建并正在进行工作mingw(32位)安装?有人拉链并以某种方式发送给我吗?喜欢在mediafire/megaupload上传它并共享链接?我知道这不是很优雅,但我真的很绝望.我只需要在MINGW上安装GMP,可能会编译c ++源代码,这样我就可以直接使用运算符重载,但C版本也可以.

请有人帮忙,因为这个血腥的图书馆,我无法完成我的工作

再次感谢你

马特奥

c c++ mingw gmp mingw32

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

使用YQL加载多个URL时获取URL

我正在使用YQL来获取一堆页面,其中一些页面可能处于脱机状态(显然我不知道哪些页面).我正在使用此查询:

SELECT * FROM html WHERE url IN ("http://www.whooma.net", "http://www.dfdsfsdgsfagdffgd.com", "http://www.cnn.com")
Run Code Online (Sandbox Code Playgroud)

第一个和最后一个是实际站点,而第二个显然不存在.实际上返回了两个结果,但是加载它们的URL不会出现在任何地方.那么如果没有加载查询中的每个页面,那么找出哪个html页面属于哪个url的方法是什么?

html url load yql

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

enable_if不能用于禁用此声明

我显然没有足够的SFINAE经验来处理这个问题.实际上我的印象是它一直工作到现在,这种问题开始出现在过去的半小时内,在我的代码中到处都是.

#include <iostream>

using namespace std;

template <unsigned int N, typename = typename enable_if <N >= 100> :: type> 
struct more_than_99
{
};

int main()
{
    more_than_99 <0> c;
}
Run Code Online (Sandbox Code Playgroud)

它说

No type named 'type' in 'std::__1::enable_if<false, void>'; 'enable_if' cannot be used to disable this declaration
Run Code Online (Sandbox Code Playgroud)

在与模板声明对应的行上.到底是怎么回事?我一直使用这种语法来启用和禁用我的模板类,它总是在实例化的行上抛出错误,而不是在声明的行上.

你能不能迂腐地解释我在这里做错了什么?

c++ templates sfinae

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

一个只接受编译时已知表达式的函数?

编译时表达式很好,因为您可以使用它们来专门化模板.因此,例如,可以通过使用该std::get方法的编译时表达式来访问元组.

std::cout << std::get<0>(my_tuple) << std::endl;
Run Code Online (Sandbox Code Playgroud)

现在,上面的表达非常难看.我正在尝试自己开发某种元组(希望将它转换为编译时字典),这样,他们就会在表单中公开一个方法:

my_dict.get<0>();
Run Code Online (Sandbox Code Playgroud)

现在,我想做的是用[]运算符替换它.我想知道这是否甚至可能.首先,我不知道如何只选择常量,编译时已知表达式作为我的运算符的参数.而且,返回类型将取决于常量表达式的值.

然而,通过定义,我可以通过类似的东西更接近我想要的东西

#define item(x) get<x>()
Run Code Online (Sandbox Code Playgroud)

这样我就可以使用了

my_dict.item(0)
Run Code Online (Sandbox Code Playgroud)

有没有办法得到比这更好的东西?

c++ templates operators compile-time-constant

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

在Mac OS X 10.9和Xcode上安装GMP库

我的问题就像标题一样简单.我有一个Mac OS Pro OS X Mavericks(10.9.4)和Xcode(5.1.1).我需要安装GMP任意精度库,以便我可以从Xcode中编写支持GMP的程序.

  • 我从官方网站下载了这个包
  • 我将它解压缩到我的桌面
  • ./configure --prefix=/usr/local --enable-cxx
  • make
  • make check
  • sudo make install

但是当我去Xcode并且#include <gmpxx.h>它没有找到它时.将-lgmp添加到我的链接器标志会导致错误.

我也试过使用自制软件brew install gmp但是也没用(同样的症状)

解决这个问题的正确方法是什么?

c++ macos xcode gmp

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

std::current_exception 是如何工作的?

考虑以下示例:

class myclass
{
public:

    void f() const
    {
        std :: cout << "Hello from myclass!" << std :: endl;
    }
};

int main()
{
    std :: exception_ptr x;

    try
    {
        throw myclass();
    }
    catch(...)
    {
        x = std :: current_exception();
    }

    try
    {
        std :: rethrow_exception(x);
    }
    catch(const myclass & n)
    {
        n.f();
    }
}
Run Code Online (Sandbox Code Playgroud)

这里我抛出一个类的对象myclassstd :: current_exception()catch(...)块中使用来获取std :: exception_ptr. 后来我使用std :: rethrow_exception再次抛出异常并捕获它,这次使用catch(const myclass &),这允许我进行调用f()并 …

c++ exception

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

用运算符折叠表达式 &gt;&gt;

考虑以下片段:

#include <iostream>

template <typename... types> void writeall(const types & ... items)
{
    (std :: cout << ... << items);
}

template <typename... types> void readall(types & ... items)
{
    (std :: cin >> ... >> items);
}

int main()
{
    writeall(1, 2, 3, 4);
    std :: cout << std :: endl;

    int a, b, c, d;
    readall(a, b, c, d);
}
Run Code Online (Sandbox Code Playgroud)

在 中writeall,我使用折叠表达式输入std :: cout参数包。一切正常,我被1234打印到屏幕上。

在 中readall,我做的完全一样,期望从std :: cin参数包中读取。但是,我得到 …

c++ variadic-templates fold-expression

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

从文件中读取一系列字节的最惯用方法

我有一个文件,比如说myfile。使用 Rust,我想打开myfile并将字节 N 到 M 读入 a中Vecmyvec最惯用的方法是什么?天真地,我想到使用bytes(), then skip, takeand collect,但这听起来效率很低。

file rust

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

与 reqwest 重用连接

我需要向同一台服务器发出一长串 REST 调用(我们称之为myapi.com)。目前,我使用 Rust 库reqwest如下:

  • reqwest::Client使用所有默认设置创建了一个。
  • 对于每个 REST 调用:
    • 我用来client.post("https://myapi.com/path/to/the/api")创建一个reqwest::RequestBuilder.
    • 我配置RequestBuilder以获得reqwest::Request.
    • 我,读send()了。Requestreqwest::Response
    • 我放弃了除了 之外的一切Client,重新开始。

我在文档中读到reqwest应该在同一个Client. 鉴于我总是重复使用相同的Client,我希望第一个 API 调用需要更多时间(由于初始 TCP 和 HTTPS 握手)。然而,我观察到所有请求始终存在一致的、相当高的延迟。所以,我想知道连接是否被重用,或者每次都重新建立。如果不是,我如何回收相同的连接?我觉得如果我能节省一些往返时间,延迟就会大大减少。

rest https rust reqwest

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