小编Kar*_*ath的帖子

为什么称它为"非类型"模板参数?

在C++模板术语中,我们有非类型模板参数,类型模板参数和模板模板参数(然后是带参数的相同列表).

为什么称它为非类型?这不是一个价值吗?不应该是"价值模板参数"吗?

如果我将它们视为值模板参数,我会错过任何内容吗?

注意:出于好奇,我检查了D语言的文档,他们称之为值.

c++ templates non-type

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

未声明的结构不会导致警告

以下代码编译正常,没有任何gcc警告.

请注意,结构没有前向声明.这是有效的C和/或C++代码吗?

struct Foobar* f;
struct Foobar* fun() { return 0; }

int main() { f = 0; fun(); return 0; }
Run Code Online (Sandbox Code Playgroud)

c c++

14
推荐指数
2
解决办法
965
查看次数

红宝石阵列内部

如何在内部实现ruby数组(主要在CRuby中,但欢迎任何其他信息)?

它们是可扩展的数组,如c ++向量还是基于列表?shift/unshift和按索引访问元素的复杂性是什么?

ruby arrays

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

haskell - 无效的代码页字节序列

readFile "file.html"
"start of the file... *** Exception: file.html: hGetContents: invalid argument (invalid code page byte sequence)
Run Code Online (Sandbox Code Playgroud)

这是用记事本++创建的UTF-8文件...如何在haskell中读取文件?

haskell file utf-8

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

这里的"boost :: mpl :: identity <T> :: type"有什么意义?

我正在检查clampboost中的实现:

  template<typename T, typename Pred> 
  T const & clamp ( T const& val, 
    typename boost::mpl::identity<T>::type const & lo, 
    typename boost::mpl::identity<T>::type const & hi, Pred p )
  {
//    assert ( !p ( hi, lo ));    // Can't assert p ( lo, hi ) b/c they might be equal
    return p ( val, lo ) ? lo : p ( hi, val ) ? hi : val;
  } 
Run Code Online (Sandbox Code Playgroud)

如果我查阅文档,则identity返回模板参数不变.

身份元功能.返回X不变.

那么在这里使用它有什么意义呢?

typename boost::mpl::identity<T>::type等于T

c++ templates boost argument-deduction

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

C++ offsetof char*算术

这个答案中,int8_t*用于(字节)指针算术:

std::size_t offset = offsetof(Thing, b);
Thing* thing = reinterpret_cast<Thing*>(reinterpret_cast<int8_t*>(ptr) - offset);
Run Code Online (Sandbox Code Playgroud)

我过去总是使用char*,但评论真的很混乱,没有人回复,所以我发布了这个单独的问题.

是否char*有效,以及进行这些计算的首选方式?

c++ byte language-lawyer

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

ruby非阻塞线读

我试图以非阻塞方式从io读取一行.

不幸的是readline块.我想我可以read_nonblock用一个额外的缓冲区解决这个问题,我存储部分结果,检查缓冲区中是否有多行等等.但对于像这样的简单任务来说似乎有点复杂.有一个更好的方法吗?

注意:我正在使用事件多路分解(select),我对它很满意,我不想创建线程,使用EventMachine等...

ruby io nonblocking

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

在哪里开始/拆分mpeg2-ts

我正在编写一个在HTTP上直播mpeg2-ts的服务器,我想知道分割mpeg传输流的最佳位置是什么.该流将由iptv机顶盒播放,我不知道这些设备的行为方式.

我认为启动流的最佳位置是在I帧之前,但设备在开始解码视频流数据之前可能需要PAT和PMT数据包...

streaming iptv mpeg2-ts

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

bash/unix工具链二进制流处理/切片

我在标准输入上有一个二进制流,它是固定大小的格式,一个连续的数据包流,每个数据包有一个长度为X的头和一个长度为Y的主体.

因此,如果X = 2 Y = 6那么它就像是00abcdef01ghijkl02mnopqr03stuvwx,但它是二进制的,标题和数据都可以包含任何 "字符"(包括'\ 0'和换行符),这个例子只是为了便于阅读.

我想摆脱标题数据,所以输出看起来像这样:abcdefghijklmnopqrstuvwx.

unix工具链中是否有允许我这样做的命令?通常有没有处理二进制数据的工具?我能想到的唯一工具是od/ hexdump但是如何将结果转换回二进制?

unix bash binary-data

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

Ruby-捕获所有网络异常

解决所有与网络相关的问题的最佳方法是什么?

异常在上面的某些层中进行了处理(可以从各个地方抛出该异常,这是处理该异常的正确位置),我显然不想将其作为通用异常捕获,因为这可能掩盖其他问题。

我希望有人以前遇到过这个问题。这是我当前的列表(但我担心它不完整):

rescue Timeout::Error, Net::HTTPServerException, Errno::EHOSTUNREACH, Errno::ECONNREFUSED, Errno::ENETUNREACH, Errno::ETIMEDOUT
Run Code Online (Sandbox Code Playgroud)

ruby networking rescue

5
推荐指数
0
解决办法
349
查看次数