它发生在很多人身上,它发生在我身上.我在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)
这有效并且说 …
我花了几天时间尝试在MINGW windows安装上安装GMP库.我完成了几十次的安装过程,遵循互联网上的任何单一指南,但我无法让事情发挥作用.所以,我迫不及待地请某人帮助我强行解决这个问题:是否有人在GMP上成功构建并正在进行工作mingw(32位)安装?有人拉链并以某种方式发送给我吗?喜欢在mediafire/megaupload上传它并共享链接?我知道这不是很优雅,但我真的很绝望.我只需要在MINGW上安装GMP,可能会编译c ++源代码,这样我就可以直接使用运算符重载,但C版本也可以.
请有人帮忙,因为这个血腥的图书馆,我无法完成我的工作
再次感谢你
马特奥
我正在使用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的方法是什么?
我显然没有足够的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)
在与模板声明对应的行上.到底是怎么回事?我一直使用这种语法来启用和禁用我的模板类,它总是在实例化的行上抛出错误,而不是在声明的行上.
你能不能迂腐地解释我在这里做错了什么?
编译时表达式很好,因为您可以使用它们来专门化模板.因此,例如,可以通过使用该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)
有没有办法得到比这更好的东西?
我的问题就像标题一样简单.我有一个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
但是也没用(同样的症状)
解决这个问题的正确方法是什么?
考虑以下示例:
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)
这里我抛出一个类的对象myclass
并std :: current_exception()
在catch(...)
块中使用来获取std :: exception_ptr
. 后来我使用std :: rethrow_exception
再次抛出异常并捕获它,这次使用catch(const myclass &)
,这允许我进行调用f()
并 …
考虑以下片段:
#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
参数包中读取。但是,我得到 …
我有一个文件,比如说myfile
。使用 Rust,我想打开myfile
并将字节 N 到 M 读入 a中Vec
。myvec
最惯用的方法是什么?天真地,我想到使用bytes()
, then skip
, take
and collect
,但这听起来效率很低。
我需要向同一台服务器发出一长串 REST 调用(我们称之为myapi.com
)。目前,我使用 Rust 库reqwest
如下:
reqwest::Client
使用所有默认设置创建了一个。client.post("https://myapi.com/path/to/the/api")
创建一个reqwest::RequestBuilder
.RequestBuilder
以获得reqwest::Request
.send()
了。Request
reqwest::Response
Client
,重新开始。我在文档中读到reqwest
应该在同一个Client
. 鉴于我总是重复使用相同的Client
,我希望第一个 API 调用需要更多时间(由于初始 TCP 和 HTTPS 握手)。然而,我观察到所有请求始终存在一致的、相当高的延迟。所以,我想知道连接是否被重用,或者每次都重新建立。如果不是,我如何回收相同的连接?我觉得如果我能节省一些往返时间,延迟就会大大减少。