小编Jon*_*tte的帖子

为什么这个依赖类型不算作使用模板参数的特化?

我正在尝试将特化组合在一起,以避免多次编写它们.例如,在下面的代码中,我尝试将"float"和"double"专门化为foo :: func()的一个实现案例; 然后我使用另一个实现"bool".

template<typename T> struct foo;

template<typename T> struct bar;
template<> struct bar<float> { typedef float Type; };
template<> struct bar<double> { typedef double Type; };

/* specialize for float and double here */
template<typename T> struct foo<typename bar<T>::Type> {
    static void func() { ... }
};

template<> struct foo<bool> {
    static void func() { ... }
};
Run Code Online (Sandbox Code Playgroud)

这在GCC 4.4.3中出错.(这是一个目标编译器,因为它是Ubuntu Server 10.04 LTS的库存,据说还有三年的生存时间.)错误是:

foo.cpp:8: error: template parameters not used in partial specialization:
foo.cpp:8: error:         ‘T’
Run Code Online (Sandbox Code Playgroud)

该错误指的是foo的第一个特化(对于"float"和"double".)

我没有看到我在这里违反C++的哪个部分 - …

c++ gcc templates specialization

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

使用Visual Studio 2010的WiX 3.0 - 没有用户界面库?

我之前使用过Wix来构建安装程序,这太棒了!

我最近重新映像了我的机器,并且只安装了Visual Studio 2010,因为我已将所有项目更新到该版本.

当我下载并安装WiX 3.0时,它抱怨Votive将不会被安装,因为我没有安装visual studio 2005或2008"或更高版本".没关系,我还是不使用Votive(我不太明白VS 2008与它有什么关系,但无论如何......)

当我尝试使用light.exe链接我的Wix安装程序时,我收到链接错误,因为它无法找到UI wixlibs.搜索我的驱动器上的各个位置(常见文件,Wix安装目录等),我找不到任何wixlib文件.

是否需要为WiX UI库单独下载?如果是的话,在哪里?我在Wix网站上找不到任何有希望的链接.或者是UI库以某种方式链接到Votive安装的问题?如果是这样,我如何在只有Visual Studio 2010的系统上安装它们?

wix wix3 visual-studio-2010 wixlib

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

LLVM,CLang和LLC优化通过

我正在实施一个新的LLVM后端,从CBackend目标开始.最终目标是使用"llc"生成输入C代码的源变换.但是,我想做一些优化,在这种情况下似乎没有得到很好的支持.LLVM目标代码是非常低级的,我必须检查它以重新发现实际发生的事情.这在AST级别上要简单得多.然而,似乎AST级别是一个Clang内部构造,并没有简单的方法来插入它.

我是否必须自己检查LLVM目标代码并对更高级别的流程进行反向工程?(每个后端都必须这样做吗?这看起来很浪费!)

c optimization llvm clang

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

脚本Hashbang:如何获得python 2解释器?

我正在编写必须在许多不同类UNIX上运行的脚本.这些是用python 2.x编写的.

不幸的是,一些较新的版本已经采用调用这种风格二进制文件"python2"而不是"python".因此,"#!/ usr/bin/env python"无法查找正确安装的python解释器.要么我得到版本3解释器(坏)或根本没有解释器(更糟!)

是否有一种聪明的方法来编写python脚本,如果安装了它将加载python2解释器,否则python解释器是否已安装?我必须使用其他机制来检测"python"何时是python3,但是当我在那个类似python的环境中时,我可以忍受它.

我想我可以写一个涟漪发射器,称之为"findpython2",并将其用作#!脚本的解释器,但这意味着我必须在搜索路径中安装findpython2,这绝对是次优的(这些脚本通常由绝对引用调用,因此它们不在路径中.)

python unix linux shell python-2.7

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

Scala / DataFrame / Spark:如何表达多个条件聚合?

假设我有一张像:

id,date,value
1,2017-02-12,3
2,2017-03-18,2
1,2017-03-20,5
1,2017-04-01,1
3,2017-04-01,3
2,2017-04-10,2
Run Code Online (Sandbox Code Playgroud)

我已经将它作为数据框(它来自 Hive 表)

现在,我想要一个看起来像(逻辑上)的输出:

id, count($"date">"2017-03"), sum($"value" where $"date">"2017-03"), count($"date">"2017-02"), sum($"value" where $"date">"2017-02")
Run Code Online (Sandbox Code Playgroud)

我试图用一个 agg() 来表达这一点,但我就是不知道如何做内部条件。我知道如何在聚合之前进行过滤,但这并不能满足我对两个不同子范围的需求。

// doesn't do the right thing
myDF.where($"date">"2017-03")
  .groupBy("id")
  .agg(sum("value") as "value_03", count("value") as "count_03")
  .where($"date">"2017-04")
  .agg(sum("value") as "value_04", count("value") as "value_04")
Run Code Online (Sandbox Code Playgroud)

在 SQL 中,我会将所有聚合放入单个 SELECT 语句中,并在count/sum子句中使用条件。我如何DataFrames使用 Scala 在 Spark 中做类似的事情?

我能想到的最接近的是计算groupBy()之前每个窗口中每个元组的成员资格,并对该成员资格乘以值(以及计数的直和)求和。似乎应该有更好的方法来用条件表达这一点里面agg(),但我找不到它。

scala dataframe apache-spark apache-spark-sql

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

node.js:为什么NODE_DEBUG = 1不起作用?(尝试调试require()错误)

我有一个像这样的目录结构:

project
  lib
    paperboy
    redis-client
    node-cookie
  srv
    main.js
  ...
Run Code Online (Sandbox Code Playgroud)

我从项目目录启动main.js:

$ node srv/main.js
Run Code Online (Sandbox Code Playgroud)

在main.js中,我可以这样做:

  paperboy = require('./lib/paperboy');
Run Code Online (Sandbox Code Playgroud)

但是,这失败了:

  redis = require('./lib/redis-client');
Run Code Online (Sandbox Code Playgroud)

同样,如果我在"项目"目录中启动交互式节点,我可以要求使用paperboy,但不能使用redis-client.我得到的错误是:

> require('./lib/redis-client')
Error: Cannot find module './lib/redis-client'
    at resolveModuleFilename (node.js:265:13)
    at loadModule (node.js:231:20)
    at require (node.js:291:14)
...
Run Code Online (Sandbox Code Playgroud)

查看resolveModuleFilename()的源代码,它会尝试打印调试字符串,我看不到:

debug("looking for " + JSON.stringify(id) + " in " + JSON.stringify(paths));
Run Code Online (Sandbox Code Playgroud)

我尝试通过导出NODE_DEBUG = 1来启用它,但在尝试要求时我仍然没有看到此调试打印.

在尝试打印这个调试时我做错了什么?第二,为什么paperboy加载得很好,但redis-client找不到?

附加信息:这是"lib"目录中的完整文件/目录列表:

lib
lib/cookie-node
lib/cookie-node/package.json
lib/cookie-node/LICENSE.txt
lib/cookie-node/README.markdown
lib/cookie-node/example
lib/cookie-node/example/ex1.js
lib/cookie-node/index.js
lib/redis-client
lib/redis-client/package.json
lib/redis-client/TODO.md
lib/redis-client/examples
lib/redis-client/examples/redis-version.js
lib/redis-client/examples/using-kiwi.js
lib/redis-client/examples/subscriber.js
lib/redis-client/examples/publisher.js
lib/redis-client/examples/.redis-version.js.swp
lib/redis-client/examples/README.md
lib/redis-client/seed.yml
lib/redis-client/LICENSE
lib/redis-client/test
lib/redis-client/test/test_throw_from_callback.js
lib/redis-client/test/test_shutdown_reconnect.js
lib/redis-client/test/test.js …
Run Code Online (Sandbox Code Playgroud)

v8 require redis node.js

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