小编Tar*_*ral的帖子

ggplot2的连续色标是否与knitr的tikzDevice不兼容?

我一直在使用带有R基本图形和tikz输出的knitr一段时间,并且想要尝试一下ggplot2.但是,这个最小的例子无法使用knitr 1.0.5产生任何输出:

\documentclass{article}
\begin{document}
<<dev = 'tikz'>>=
library(ggplot2)
d = data.frame(a = c(1, 2, 3), b = c(4, 5, 6), c = c(7, 8, 9))
ggplot(d, aes(a, b, color = c)) + geom_point()
@
\end{document}
Run Code Online (Sandbox Code Playgroud)

相反,它失败了Error in UseMethod("depth"): no applicable method for 'depth' applied to an object of class "NULL".在R中执行代码或选择png设备将产生预期的图形.省略颜色美学或c使用tikzDevice进行因子分解工作,因此连续色标似乎是个问题.

有什么我做错了,还是那个错误?

graphics r tikz ggplot2 knitr

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

为什么在编译时不检查C++异常规范?

我刚才读到,在C++ 11标准版本中,异常规范已被弃用.我以前认为指定你的功能可能是好的做法,但显然,不是这样.

在阅读了Herb Stutter引用得很好的文章之后,我不禁要问:为什么实际上是按照它们的方式实现了异常规范,为什么委员会决定弃用它们而不是在编译时检查它们?为什么编译器甚至允许抛出一个未出现在函数定义中的异常?对我来说,这听起来像是在说"你可能不应该指定你的函数返回类型,因为当你指定时int f(),但return 3.5;在它内部,你的程序可能会崩溃." (即强类型的概念差异在哪里?)

(由于typedefs中缺少异常规范支持,假设模板语法可能是Turing-complete,实现这个听起来很容易.)

c++ exception exception-specification c++11

8
推荐指数
2
解决办法
1297
查看次数

转发声明类模板的成员枚举

使用C++ 11的强类型enum,可以声明类的成员枚举,如下所示:

class X {
public:
    enum class E;
};

enum class X::E { a, b };
Run Code Online (Sandbox Code Playgroud)

但是,在制作X类模板时:

template <typename T>
class X {
public:
    enum class E;
};

template <typename T>
enum class X<T>::E { a, b };
Run Code Online (Sandbox Code Playgroud)

gcc 4.7.2和clang 3.0都抱怨"错误:'枚举X :: E'是枚举模板[-pedantic]"和"错误:枚举不能是模板".我认为相关的标准部分(事实上,这个问题来自于)是§14模板,其中第一段规定:

声明模板声明

  • 声明或定义函数或类,或
  • 定义成员函数,成员类,成员枚举类模板或嵌套在类模板中的类的静态数据成员,或者
  • 定义类或类模板的成员模板,或
  • 是一个别名声明.

(强调我的).这是一个编译器错误,还是我完全错误地解释了这个语句?

c++ enums templates forward-declaration c++11

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