我有一个Java类,其中javadoc的一部分实际上是作为构建过程的一部分生成的:方法的返回值(静态字符串值)被插入到源文件中,就像$Revision: $
标签在某些版本控制软件中工作一样.
虽然这种行为可能有问题,但我使用的框架(WEKA机器学习库)需要这种信息重复.我希望Eclipse的代码格式化程序不要干扰生成的注释.我正在使用Eclipse Indigo版本.
我可以用特殊的注释开启/格式化关闭//@formatter:on
和//@formatter:off
.但是,@formatter
标签仅在"正常"注释中起作用,而不在javadoc注释中起作用.显然,它们很容易与javadoc标签混淆.这意味着我无法关闭javadoc注释的生成部分的格式化程序(例如,自动换行),并将其保留为其余部分,因为@formatter
指令必须放在javadoc注释周围.
有一个解决方法来切换javadoc注释中的代码格式?
甲棱镜为聚焦到联产品类型的光学部件,而仿射遍历是一种光学器件的可聚焦于0 1的元件,即,AffineTraversal s t a b
是同构的(s -> Maybe a, (s, b) -> t)
.据我所知,如果镜头由棱镜组成,我们会得到一个仿射遍历,只要使用适当的棱镜编码.
我感兴趣的是将Maybe
那个(幼稚)配方移动到设置器侧而不是吸气器侧,这样我就可以使用一个总是提取一个元素的光学元件,但可能无法将它放回去.
我的用例与细化类型有关.想象一下,我们有一个类型A
及其细化B
(B ? A
).然后有一个棱镜refined :: Prism' A B
:一个A
可能或可能不是有效的B
,但每个B
都可以re
进入一个A
.结合了Lens' C A
有refined
,我们有一个仿射遍历.在另一个方向上,可以想象一个光学元件unrefined
比一个光学元件更聪明re refined
:如果它是有效的,A
可以变成一个光学元件,或者如果它不是,则可以变成光学元件.现在,如果我们结合了有,我们有我们的双仿射穿越:它可以随时获得从,但放回任何旧的可能违反的不变和产量,而不是.可以以类似的方式确保更复杂的不变量.Just b
B
Nothing
Lens' C B
unrefined
A
C
A
C
Nothing
Just c
有趣的是,Scala 的单片机 …
我试图在我在C++ 11中编写的同一个应用程序中使用两个库LIBSVM和LIBLINEAR.LIBSVM和LIBLINEAR都在基本上是基于行的稀疏矩阵表示中输入它们:存在节点结构
struct svm_node
{
int index;
double value;
};
Run Code Online (Sandbox Code Playgroud)
稀疏矩阵本身就是struct svm_node **
,每行都是a struct svm_node *
,行终止index = -1
.调用此结构的LIBLINEAR版本feature_node
并具有相同的定义.虽然LIBSVM和LIBLINEAR由同一作者写的,svm.h
和linear.h
,因此struct svm_node
和struct feature_node
是没有丝毫关系.
在某些情况下,我想创建一个内核SVM模型(仅由LIBSVM实现)和一个逻辑回归模型(仅由LIBLINEAR实现)我的数据.数据集传递给它们各自的库---在二进制级别上,相同的---稀疏矩阵表示,可能非常大,我宁愿避免memcpy()
全部.一个简单的reinterpret_cast<feature_node **>(svm_node_ptr_ptr_variable)
似乎做得很好.
我也在-flto
发布版本中使用LLVM的完整程序优化(),因此我希望确保代码不会以不可预测的方式进行优化.
有什么办法型双关语svm_node **
为feature_node **
避免可能的(当前或未来)编译器优化导致的任何破损?__attribute__((__may_alias__))
在这里有帮助,如果有,我应该如何使用它?
如果__attribute__((__may_alias__))
只对类型有意义,那么如果我创建了自己的struct和指向结构的指针,它是否有效
struct __attribute__((__may_alias__)) SparseElement {
int index;
double value;
};
typedef SparseRow SparseElement * __attribute__((__may_alias__));
Run Code Online (Sandbox Code Playgroud)
然后将retinterpret_cast
ed 传递SparseRow * …
考虑以下模板:
template <typename T>
void foo() {
static_assert(sizeof(T) == 0, "Now what?");
}
Run Code Online (Sandbox Code Playgroud)
标准(第7.4节)说:
[如果static_assert的条件为false]程序格式错误,生成的诊断消息(1.4)应包含字符串文字的文本,[...]
(参考来自/sf/answers/773423451/)
实际上,在static_assert
我们实例化函数模板之前不会失败foo
,因为使用模板参数会强制编译器仅在两阶段查找期间评估条件.因此,除非实例化函数模板,否则上面的代码片段不会被视为格式错误.
另一方面,根据定义,C++中的 sizeof(T)> 0 .因此,条件的值实际上独立于任何模板参数!是否允许"恶意"编译器利用这一事实,并拒绝将程序视为格式错误,无论是否foo
实际实例化?
c++ ×2
c++11 ×2
eclipse ×1
eclipse-jdt ×1
haskell ×1
haskell-lens ×1
javadoc ×1
lenses ×1
templates ×1
type-punning ×1
weka ×1