2 371
Subscribers
-224 hours
-17 days
-330 days
Posts Archive
2 370
〖阑夕〗郭敬明在道歉里说要把抄袭作品的版税收益赔给庄羽,庄羽把皮球踢回去说不妨共同成立反剽窃基金,这是她的权利,我接下来要讲的也没有具体指向这个选择的意思。
「吕氏春秋」记载孔子他老人家的学生子路救了鲁国的一名溺水者,被救的人感激子路,送了他一头牛,子路也很坦然的把牛给牵回家了,孔子听说后大感欣慰,说这是一个很好的榜样,鲁国百姓从此必将踊跃的救助落水者了。
儒家思想一般来说还是比较端着的,但是这个典故甚至超前到让人看到了一丝现代经济学的影子,孔子认同做了好事就应理直气壮的接受奖励的道理,若是为了树立不求回报的人设而推辞犒赏,反而会起到坏的效果,让别人都不再愿意冒着风险行善救人了。
在和抄袭作斗争的漫长岁月里,「你不就是为了钱么」一直都是用来苛责维权者的一种歪理,而许多维权者出于自我保护,也不得不做出姿态,抢先表示我打官司就是为了讨个说法,你赔的钱我一分钱不要,有多少我捐多少。
琼瑶当年状告于正「宫锁连城」的案子胜诉之后,就把赔偿金捐给了公益基金,「乔楚传」一审判决抄袭成立之后,潇如瑟也是第一时间表态要把钱都捐掉,连你肯定都没听过的,贵州当地一个业余喜欢写诗的官员赵雪峰,在发现自己的诗作被人抄袭之后诉诸法院,最后也没敢拿区区三万块钱赔偿,改为资助家乡的作文比赛。
这是不正常的。
金钱是创作行为的主要回报,你抄了我的东西,既挣了名又博了利,然后反过来逼我扮演一个视金钱为粪土的角色,这在本质上就是道德捆绑,让所有人都接受维权行为除了伸张正义之外无利可图的既成事实,最终迂回而间接的打压了许多潜在的想要寻求利益公正的念头。
凭什么啊?就是为了钱才控诉你抄袭又怎么了?只许你赚得盆满钵满、不让我挽回经济损失么?
何况你们可以去收录中国法院裁判文书的网站去看看和著作权抄袭有关的案件,最终原告能够胜诉的比例低得可怜,因为从取证到定量再到判定,都是很难通过法律条款一锤定音的。
简而言之,就是官司难赢、赢了也赔不了多少钱、甚至连那点儿赔偿款都拿着烫手,一层层的漏斗筛下来,必然让后来的创作者望而生畏。
所以我其实很期待看到一个起诉抄袭者的公共案件能够让被告真的赔出让他感到肉疼的数额,然后这一大笔钱被原告坦坦荡荡的接受了,不管是用来每天吃香的喝辣的还是去买那些取悦自己的昂贵商品,我希望这样的结果是一个常态化的、大家都乐于见到的结果。
2 370
课后作业:
#include <iostream>
template <class T>
void f(T) {
std::cout << "func 1";
}
template <class T>
void f(T *) {
std::cout << "func 3";
}
template <>
void f<>(int *) {
std::cout << "func 2";
}
int main() {
int *p;
f(p);
}2 370
与类模板不同,函数模板并不存在偏特化(partial specialization),所以 34 是 1 的重载,他们在重载决议(overload resolution)中地位等价。
2 与 5 分别是 1 与 3 的显式特化(explicit specialization),所以该代码能够编译而不会产生重定义,原因暂且按下不表,后文阐述。
重载决议首先进行名字查找(name lookup)与参数依赖查找(argument-dependent name lookup),该阶段仅关心函数名的可见性,而对参数是否匹配并不关心,所以 25 仅作为特化而非重载并不参与。查找生成候选函数(candidate function)集合,包含 134。
对于候选函数中的每一个函数模板,因为调用时并没有显式指定模板实参(explicit template argument specification),所以将进行模板实参推导(template argument deduction)。4 推导失败,将不会加入可行函数(viable function)集合。而 13 推导成功,将对应的模板特化 25 加入可行函数集合。
对于可行函数,将两两比较以确定最佳可行函数(best viable function),其规则众多,这里地方虽然够大但是也写不下。对于两函数模板,将按照模板特化偏序规则(partial ordering of function template)进行比较。
模板特化偏序规则比较的是函数模板本身,而非模板特化。简单的来说,若 f 比 g 接受更少的类型,则 f 比 g 更特殊,即 f 优于 g。显然 3 比 1 更特殊,所以其对应特化 5 是最佳可行函数。
在不存在 5 的情况下,模板实参推导成功后 3 将进行隐式特化(implicit specialization),最终调用的为该隐式特化。
2 与 5 分别是 1 与 3 的显式特化的原因是:在 2 定义时,仅有 1 一个函数模板可见,它只能成为 1 的特化;而在 5 定义时,1 与 3 两个函数模板均对其可见,模板特化偏序规则在此又将被应用,选择更特殊的 3,成为其特化。
---
如果添加一个 6:
void f(int *) {
std::cout << "func 6";
}
注意到 6 并非函数模板,而最佳可行函数的确定规则中有一条:非模板函数始终优于模板函数。所以将毫无悬念地调用 6。