【C++】template 統合スレ -- STL/Boost/Loki, etc.
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG以下のスレッドを統合するスレです。
STLスレッド
Part1 http://pc.2ch.net/tech/kako/1004/10042/1004287394.html
Part2 http://pc3.2ch.net/test/read.cgi/tech/1026793823/
【C++】Boost使い集まれ!
http://pc3.2ch.net/test/read.cgi/tech/1033830935/
Generic Programming with C++ Template
http://pc.2ch.net/tech/kako/1008/10085/1008593126.html
関連スレ、その他リンクは >>2-5 あたりに。
0345デフォルトの名無しさん
NGNG試さずに書いてるが、
boost::compose_f_gx( boost::bind( &A::print, _1, 1 ), &boost::any_cast<A&> );
>>344
boost::any_cast<A>(*pos).print();
じゃねーの?
0346345
NGNG0347デフォルトの名無しさん
NGNG英語読めん。
それと、iostreamをインストールすると、コンパイラ付属のは使えなくなるんか。
それはそれで不安だ。教えてくれ。
0348デフォルトの名無しさん
NGNGDLして解凍して適当なフォルダに入れてインクルードパス通すだけ
というかあれくらいの長さのreadmeくらい読みなよ…
後環境も何も書いてないからこれ以上は無理
0349デフォルトの名無しさん
NGNG0350デフォルトの名無しさん
NGNGありがとうございます!
boost::compose_f_gx( boost::bind( &A::print, _1, 1 ), &boost::any_cast<A&> );
は通りませんでしたが、
boost::any_cast<A>(*pos).print();
は無事通りました。
boost::any_castは依存関係の把握はできないかもしれませんので、ポリモルフィズム
には使わないようにします。
0351デフォルトの名無しさん
NGNG0352名無しさん@Emacs
NGNGっつーか皆さん boost::any ってどんな時に使ってます?
イチイチ any_cast 噛まさにゃならん上にポリモーフィズム使えないもの
をどんな風に使うのか興味があるのですが・・・
# つまり馬鹿だから使い道が思い付かないわけでして。
struct A { virtual void print() { std::cout << "A" << std::endl; }};
struct B : public A{ virtual void print() { std::cout << "B" << std::endl; }};
int main()
{
std::vector<boost::any> a;
a.push_back(new A());
a.push_back(new B());
std::vector<boost::any>::iterator pos = a.begin();
try {
for (; pos != a.end(); ++pos) boost::any_cast<A*>(*pos)->print();
}
catch (boost::bad_any_cast& e) {
std::cerr << e.what() << std::endl;
}
}
output>
A
boost::bad_any_cast: failed conversion using boost::any_cast
0353デフォルトの名無しさん
NGNGvoid* で汎用パラメータ渡し…とか、union でノードの種類を区別した
木構造…とかのtypesafeなバージョンとしては、とりあえず超高速で
お手軽に書こう、と思ったときには使えるかも。俺は使ったこと無いけど。
using namespace boost;
struct add { add(any l,any r):left(l),right(r){} any left, right; };
struct mul { mul(any l,any r):left(l),right(r){} any left, right; };
double eval_expr( any e )
{
if( e.type() == typeid(add) ) {
add ex = any_cast<add>(e);
return eval_expr( ex.left ) + eval_expr( ex.right );
} else if( e.type() == typeid(mul) ) {
mul ex = any_cast<mul>(e);
return eval_expr( ex.left ) * eval_expr( ex.right );
} else if( e.type() == typeid(double) ) {
return any_cast<double>(e);
} return any_cast<int>(e);
}
int main()
{
any expr = add( add(mul(6,7),2), mul(3,4) );
cout << eval_expr( expr ) << endl;
}
その手の使い方をするにしても、入れられる型に制限をつけた
variantとかの方がマシだしなぁ。
0354デフォルトの名無しさん
NGNGany.hppの中身を見てみると、boost::any_castはキャストしようとする型と、
元のタイプのtypeidを比較して、一致しないとキャストしないようになっている。
だからポリモルフィズムに使えないんだろう。
-- any.hpp (STLpotrt)より
template<typename ValueType>
ValueType * any_cast(any * operand)
{
return operand && operand->type() == typeid(ValueType)
? &static_cast<any::holder<ValueType> *>(operand->content)->held
: 0;
}
std::mem_fun_refと組み合わせていろいろと面白い事をやらせようとしていた
のだが、使えねー。まあだめならだめで昨日から悩み続けていた事が解決
したのでいいのだが。
0355デフォルトの名無しさん
NGNG0356デフォルトの名無しさん
NGNGclass A {
public:
void func(int i) {
std::cout << i << std::endl;
}
};
int main()
{
std::vector<A> a;
a.push_back(A());
a.push_back(A());
std::for_each(a.begin(), a.end(), std::compose1(std::mem_fun_ref(&A::func), 1);
}
0357デフォルトの名無しさん
NGNGわからなくなってきた。
class A {
public:
void func(int i) {
std::cout << i << std::endl;
}
};
int main()
{
std::vector<A> a;
a.push_back(A());
a.push_back(A());
std::for_each(a.begin(), a.end(), std::bind2nd(std::mem_fun_ref(&A::func), 1));
}
0358デフォルトの名無しさん
NGNGわかりますか?コンパイラはgcc3.2.1です。
int main()
{
double ad[] = {0.5, 1.0, 1.5};
std::vector<double> d(ad, ad + 3);
std::transform(d.begin(), d.end(), std::ostream_iterator<double>(std::cout, " "), std::sin);
}
0359デフォルトの名無しさん
NGNG#include <cmath>を#include <math.h>にして、std::sinをsinにすれば通ります。
しかし、ここで当然疑問が沸きます。なぜstd名前空間に包まれているsinが
std::transformに適用できないのか、どうしてもわかりません。何のための
<cmath>なんでしょうか?
0360デフォルトの名無しさん
NGNGcompose1 というのは、返値を h = compose1( f, g ) とすると
h(x) が f( g(x) ) と同じ意味になる合成のことなわけだが。
たぶん貴方の場合、std::mem_fun_ref(&A::func) が2変数関数だし、
1 というのは関数ですらないので全然ダメ。
ついでに1変数メンバ関数用の mem_fun_ref は g = mem_fun_ref( f ) とすると
g(x, y) と x.*f(y) が同じ意味になるもので
bind2nd というのは g = bind2nd( f, c ) とすると
g( x ) が f( x, c ) と同じ意味になるものなので期待通りになる。
0361デフォルトの名無しさん
NGNGC では double sin(double x); しかないが、C++ では
double sin(double x);
float sin(float x);
long double sin(long double x);
とオーバーロードされてて、どれかわからんので困ってるのでは?
0362デフォルトの名無しさん
NGNGなるほどありがとうございます。キャストしたら通りました。引数が
doubleだからつい自動判別してくれると期待していたのですが、
アルゴリズム中では正しく働かないようですね。
int main()
{
double ad[] = {0.5, 1.0, 1.5};
std::vector<double> d(ad, ad + 3);
std::transform(d.begin(), d.end(), d.begin(), static_cast<double (*)(double)>(std::sin));
}
0363デフォルトの名無しさん
NGNG{
int id;
double value;
} BANK;
std::list<BANK> blist;
みたいなlistがあって、こいつを構造体BANKの中のvalueの値で
sortしたい(valueの値が大きい順に)場合、どうしたらよいのでしょうか?
blist.sort()を使う方を教えてください!!
0364デフォルトの名無しさん
NGNGsortに引数を渡せ。
0365352
NGNGむむむ、なるほど。情報サンクスコ
なんか大抵の場合はポリモーフィズムかテンプレート使えばいい感じですなぁ・・・
>>853氏の例をちょっといぢってみたんだけど、 6 を 6.0f にするだけで氏ぬのね。
typeid 使うとこの辺(double, float とかポリモーフィズムとか)が問題になって来るわけか。
なるほど、なるほど。勉強になりますた。
0366デフォルトの名無しさん
NGNG引数の書き方がわからないです。教えてくらはい。
0367デフォルトの名無しさん
NGNGよーし、SGIのとこからもってきてやったぞ、ホレ。
template<class BinaryPredicate>
void sort(BinaryPredicate comp);
Comp must be a comparison function that induces a strict weak ordering (as defined in the LessThan Comparable requirements on objects of type T.
This function sorts the list *this according to Comp.
The sort is stable, that is, the relative order of equivalent elements is preserved.
All iterators remain valid and continue to point to the same elements.
The number of comparisons is approximately N log N, where N is the list's size.
0368デフォルトの名無しさん
NGNGstruct BANK {
int id;
double value;
BANK(int i, double d) : id(i), value(d) {}
};
inline bool Cmp(BANK a, BANK b)
{
return a.value > b.value;
}
int main()
{
std::list<BANK> blist;
blist.push_back(BANK(1, 1.1));
blist.push_back(BANK(2, 3.3));
blist.push_back(BANK(3, 2.2));
blist.sort(Cmp);
std::list<BANK>::iterator pos = blist.begin();
while (pos != blist.end())
std::cout << pos->id << ", " << pos++->value << std::endl;
}
0369デフォルトの名無しさん
NGNGわかりました!!
これで明日のミーティングに間に合いそうです。
みなさんありがとうございました。
0370デフォルトの名無しさん
NGNGよく似ているために未だに混同します。
例えば関数オブジェクトは内部状態を持っていてそれを変化させても
いいようですが、叙述関数は呼び出しの度に内部状態を変化させては
ならないと規定されているようです。
皆さんはどうやって区別していますか?
0371デフォルトの名無しさん
NGNG叙述関数は、ブール値を返す関数または関数オブジェクトでした。
で、やっぱり関数オブジェクトも内部状態を変化させない方がいいの
でしょうか?
0372デフォルトの名無しさん
NGNGこれどこで規定されてんの?
0373デフォルトの名無しさん
NGNG「規定」と書くと語弊がありますね。C++標準ライブラリ日本語版§8.1.4、P297
に「叙述関数と関数オブジェクトの違い」という節があり、内部状態を変化させ
る関数オブジェクトを叙述関数として使うと、予想に反した動作をする例が書か
れています。
つまり、constな関数オブジェクトでないと、予想した動作ではなくなる可能性
があるという事ですね。
0374デフォルトの名無しさん
NGNGその記述がすべてだな。「可能性がある」ってんだから、
あとは、場合による、としか言えないんじゃないの。
0375デフォルトの名無しさん
NGNG簡単にまとめると次のようになりますかね。
叙述関数:
bool値を返す関数または関数オブジェクト。但し、呼び出し毎に内部状態
が変化する関数または関数オブジェクトは、標準アルゴリズムに適用する
と予想に反した動きをする可能性があるので、できるだけ使用しない方が良い。
0376デフォルトの名無しさん
NGNGまとめるのは勝手だが、
「可能性があるので」が理由じゃぁまとまってるとは言い難い。
0377デフォルトの名無しさん
NGNGやっぱり「可能性」の具体例をあげないとダメか・・・・
本を読んでくれ、なら簡単なんだが、自分でまとめるとなると、何か例を
考えないといけないか。
0378デフォルトの名無しさん
NGNG副作用がない、と仮定してアルゴリズムが書かれていると、
述語(ここで言えば叙述関数)を呼び出す回数が予想できないわけだ。
副作用がないなら同じ引数で何度呼んでも値は同じはずだから、アルゴリズムは返り値をメモり、以降その値を使いまわすかもしれない。
(しかし副作用がある関数は呼ばれるごとに値が変わることができるから、メモった値と呼んで帰った値は一致しない可能性がある。)
このような性質はアルゴリズム内に隠蔽されていて関数提供側ではまったく予想できない。
一方、逆に標準アルゴリズムを提供する側から言えば、
述語は条件判定に使う関数だから、
例えば副作用がコンテナ内の要素に影響を及ぼす類のものだとすると結果は破壊的になりうるし、そうでなくても同じ対象を比較する際に呼び出すごとに違った値を返すとすると
それらを仮定してアルゴリズムを書くのは大変困難だ。
ひどい例を考えてみる。あるコンテナをソートするとする。
そのときにソートの比較に使う述語(if文の中で比較・判別に使われる)が
大小判定ついでにコンテナの値を書き換えるとすると、
どんなアルゴリズムでも大前提(ソート中に値が変化しない)が崩れるから
ソートはまずまともに機能しないだろう。
(終わらなくなったり、正しくない結果を返したり・・・。)
述語というのは論理学用語だが、
基本的にif文(あるいはfor文など)の条件式内で条件判定に使われる
特殊な種類の関数をさす用語。
普通、if文の中で代入や入出力などするコードはあまりお行儀が良いとは言えない
分かりにくい保守・変更しにくいコードだという事は納得してもらえると思う。それと同じ。
(エラー処理のように条件が成立したら処理を中止するような場合はともかく。)
一方、述語(叙述関数)は関数オブジェクトの中でも特殊なものなので、
一般の関数オブジェクトの在り様まで規制するものではないから、一般の関数オブジェクトは副作用があっても良い。っつーか、むしろないと困るものもあるくらいだろう。
0379デフォルトの名無しさん
NGNGそれの存在意義がわからない。
プログラミング言語C++ 第3版 17.4.1.5
void f(map<string,int>& m)
{
map<string,int> m2; // デフォルトで < を使う
map<string,int> m3(m.key_comp()); // mの比較基準を使う
}
とあるが、m.key_comp() は less<string> だから、
デフォルトの < を使うのと同じこと。
比較オブジェクトをコンストラタに渡すのが有意義な場合ってある?
0380デフォルトの名無しさん
NGNGキーが整数として、比較基準を、ある基準値との差の比較とすると、
比較オブジェクトの中に基準値を入れて使うことが想定できる。
struct compare_distance
{
  const int origin;
  compare_distance(int org):origin(org){}
  bool operator() (int rhs, int lhs) const
  {
    return std::abs(rhs - origin) < std::abs(lhs - origin);
  }
};
0381デフォルトの名無しさん
NGNGmapの型は map<int, T, compare_distance> ですよね。
map<int, T> つまり map<int, T, less<int> > に、渡せるわけではないと。
0382デフォルトの名無しさん
NGNG0383デフォルトの名無しさん
NGNG何にも真似のできない世界です。このライブラリに込められた
テンプレートの技法は、後世のどの言語もついに超えることが
ありませんでした。ですから現在でもこのライブラリはテンプ
レートの最高の技術を示した作品であり続けています。
C++の晩年には、テンプレートを駆使した手法は時代遅れとなっ
ており、手厳しい非難の対象にもなっていました。しかしC++は
テンプレートを捨てることなく、むしろテンプレートの限界を
極めるような作品を数多く生むようになります。その最高の成
果が、この「Loki」で、たった1つの主題の技法の可能性を徹
底的に汲み尽くした(残念ながらC++の死によって未完となって
いますが)作品となっています。加えて、ソースにコンパイラ
の指定がなく、そのためにVC++版、g++版、Comeau版など、いろ
いろでコンパイラに実装が試されています
0384デフォルトの名無しさん
NGNG0385デフォルトの名無しさん
NGNGおれの中では両者の間に連想がある。なんというか厳格さと
柔軟さの混在というか...
でももしC++が廃れるようなことがあれば、テンプレートを
魔術的に駆使したものはフーガの技法みたいな扱いを受けそう。
0386デフォルトの名無しさん
NGNG今どういう扱いを受けているか考えてみるといい
0387デフォルトの名無しさん
NGNG俺の場合、STLとかからちゃんと勉強しないといけないけど(笑)
ところで、boostのfunctionalとかfunctionって、メンバ関数に対しても使えるの??
0388デフォルトの名無しさん
NGNG0389デフォルトの名無しさん
NGNG0390デフォルトの名無しさん
NGNG「このコンテナはスレッドセーフである」と規格に書かれてたりは、しないと思う(たぶん)。実装に依存すると考えるべきではないかなぁ?
0391デフォルトの名無しさん
NGNGsafety of STL containers." となっているのでこれを読んでみては?
0392デフォルトの名無しさん
NGNGメンバ関数は第一引数にインスタンスのポインタを
渡してやればいいから、こんな感じ。
#include <iostream>
#include "boost/function.hpp"
#include "boost/bind.hpp"
struct Test {
int t_;
Test(int t) : t_(t) {}
int Add(char t) {return t_ + t;}
};
int main() {
Test test(5);
boost::function1<int, char> func;
func = boost::bind(&Test::Add, &test, _1);
boost::function2<int, Test *, char> func2;
func2 = &Test::Add;
std::cout << (func)(6) << std::endl;
std::cout << (func2)(&test, 6) << std::endl;
}
0393デフォルトの名無しさん
NGNGワル カコイイ(・∀・)!
0394デフォルトの名無しさん
NGNG表示したいのですがいい方法は無いですか?
()でくくってc_str()とかやってみましたが、
error C2039: 'c_str' : 'boost::basic_format<Ch,Tr>' のメンバではありません。
[
Ch=char,
Tr=std::char_traits<char>
]
と怒られてしまいます。
MessageBox(NULL, (boost::format("Error !!!\n"
"\tlocation %d:%d\n"
"\tcode %02x:%02x:%02x:%02x\n"
"\tmessage %s\n") %
parse_error->get_line() %
parse_error->get_row() %
parse_error->get_genre() %
parse_error->get_category() %
parse_error->get_sequence() %
parse_error->get_sequence_case() %
parse_error->get_message()).c_str(),
"error", 0);
0395デフォルトの名無しさん
NGNG0396393
NGNG精子出た!
ropeキター
0397デフォルトの名無しさん
NGNG「極めて洒落たテクニック」のソースきぼーん
"Sutter"とか"copy constructor"とかで検索したけど
みつからんかった...
0398デフォルトの名無しさん
NGNGExceptional C++ の項目13。
0399デフォルトの名無しさん
NGNGLoki::SmartPtr::operator=()を見たらいいやんって書いてあるやん。
0400デフォルトの名無しさん
NGNG思ってしまいます。
コンパイルを早くする方法ってないのかな?
templateだからやっぱ無理?
0401デフォルトの名無しさん
NGNGプリコンパイル
0402デフォルトの名無しさん
NGNG「プリコンパイルヘッダの使用」とかいうやつ?
0403デフォルトの名無しさん
NGNG0404デフォルトの名無しさん
NGNGttp://www1.kcn.ne.jp/~robe/cpphtml/html03/cpp03003.html
この辺が参考になると思う。
0405デフォルトの名無しさん
NGNGtemplate <class T1, class T2, template <class> class Unit>
class GenScaterHierarchy<TypeList<T1, T2>, Unit>
: public GenScatterHierarchy<T1, Unit>
: public GenScatterHierarchy<T2, Unit>
{
・・・・・
};
最初の(左側の)基底クラスはGenScatterHierarchy<T1, Unit>としなくても、
template <class T1, class T2, template <class> class Unit>
class GenScaterHierarchy<TypeList<T1, T2>, Unit>
: public Unit<T1>
: public GenScatterHierarchy<T2, Unit>
{
・・・・・
};
のようにUnit<T1>でいいのでは?
0406デフォルトの名無しさん
NGNG0407デフォルトの名無しさん
NGNGそれだと継承ツリーの途中で Unit<T1> を複数回継承することになって、
コンパイルエラー食らわん?
0408デフォルトの名無しさん
NGNGそ、そうかな... ;
0409デフォルトの名無しさん
NGNG0410デフォルトの名無しさん
NGNG暇ならこれチェックして
0411デフォルトの名無しさん
NGNGinsert(std::map<int, std::string>::value_type(1, "abc"))
と
insert(std::pair<int, std::string>(1, "abc"))
のどちらがより適切でしょうか?
0412デフォルトの名無しさん
NGNG同じ。mapのvalue_typeは、pairをtypedefしたもの。
0413デフォルトの名無しさん
NGNGそれはわかってるんじゃないか?
0414デフォルトの名無しさん
NGNGBorland-C++5.6.2でコンパイルしてみた所、同じようなコードを吐いているようです。
コンパイラが違うとバイナリも違ってくるかもしれませんが。
ただ、タイプ量が少ないstd::pairの方が多用される傾向にあると思います。
もっともmap<int, std::string>をtypedefして使えばどちらもあまり変わらないですね。
0415デフォルトの名無しさん
NGNGinsert(std::make_pair(1, "abc"))
0416デフォルトの名無しさん
NGNGstd::wofstream wout("out.txt");
wout << win.rdbuf();
wout.close();
win.close();
マルチバイトを使おうとおもってテストでこれやってみたのですが、
0x81で始まる、日本語がうまく表示されないんですけど
ベターな解決策おしえてください。
win2000 vc6 stlport使用 です。
0417デフォルトの名無しさん
NGNG411です。
遅くなりましたがありがとうございます。make_pairという述語があるのですね。
0418デフォルトの名無しさん
NGNGstlに関係ないじゃん。(V)C++スレにゆくべきかと。
ちなみにマルチバイトとwchar_tは別物。
0419デフォルトの名無しさん
NGNG2)vec.push_back(str);
3)str="fuga";
ここで2)でvectorに追加されているのはstrそのものでしょうか
あるいはそのコピーでしょうか?
また3)では2)でvectorに登録された内容は上書きされてしまうのでしょうか
0420デフォルトの名無しさん
NGNG当然コピーです。3)で代入しても、vectorの中身には何の影響も及ぼしません。
0421419
NGNGありがとうございます。いろいろ試してみます
0423IP記録実験
NGNGhttp://qb.2ch.net/test/read.cgi/accuse/1042013605/
1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0424デフォルトの名無しさん
NGNG0425デフォルトの名無しさん
NGNGwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0426デフォルトの名無しさん
NGNG確かに民放じゃやらないですな。
BSではたまにやるけど。
0427デフォルトの名無しさん
NGNGまたポリタンコですか
あいつどうしようもないですね。
0428デフォルトの名無しさん
NGNG絶 対 に 有 料 化 し な い で ね 。
0429IP記録実験
NGNGhttp://qb.2ch.net/test/read.cgi/accuse/1042013605/
1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0430デフォルトの名無しさん
NGNGそのキャップだけはいろんな意味で許せん。僕によこせ
0431デフォルトの名無しさん
NGNGJane使えば一目瞭然
0432デフォルトの名無しさん
NGNG連続書き込み規制変えたな
きつい。。。
0433デフォルトの名無しさん
NGNG0434デフォルトの名無しさん
NGNG0435デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 138720人 発行日:2003/1/9
年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。
そんなわけで、年末に予告したIP記録ですが実験を開始しています。
「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0436デフォルトの名無しさん
NGNG迂闊にもワラタ
0437デフォルトの名無しさん
NGNGちょっと違うが今までがそんな感じだったんよ。
「(善意であろうが悪意であろうが)確認できない以上利用者が真偽を判断すべきであり、
要請があっただけで全て削除するべきではない。」
というのがひろゆきの主張。
嘘を嘘と〜の名言もこれに繋がる。
これに対して動物病院訴訟における地裁・高裁の判断は、
「外部から確認できない以上当事者が中傷だと主張し削除の要請をした場合は、管理人は削除すべき。」
今後はこれに倣い当事者側が中傷だと主張さえすればIP公開する必要が出るかもしれない。
(もちろん警察なり裁判所の正式な提出要請があってからになるだろうけど)
なお、書き込んだ者はその書き込みに対し責任を負うべし、ってのは賛成だが。
いずれにしろ善意の告発は難しくなると思われ。
0438デフォルトの名無しさん
NGNGと思うんだけど、某○○さんは違うという。。。
0439デフォルトの名無しさん
NGNGと思うんだけど、某○○さんは違うという。。。
0440デフォルトの名無しさん
NGNGそれはそのとおりでしょうねぇ。
・内容証明が届いて、名誉毀損の書き込みがあることを知りえた
・その日から起算してン日間書き込みを消さなかった
・その間のン日間は名誉が毀損されたことによって被害が発生した
ということを「裁判所が認めれば」負けちゃうんじゃないかなぁ、、
>んだったら、IP取ってない板で、自分で自分を中傷して、
>すぐに裁判すれば賠償金が取れるってことになっちゃう、、
そのとおりじゃないすかねぇ、、
掲示板の持ち主がけんすうさんだという前提でいうと、
その中傷発言が自作自演かどうか、けんすうさんにも判断できないん
だったら、けんすうさんが責任を負わないといけないという判決ですよね。
しかし個人の中傷発言だったら最初から消せばいいのでは。。
0441デフォルトの名無しさん
NGNG0442デフォルトの名無しさん
NGNG2ちゃんねるの幹部から得た話として証言する。
「2ちゃんねるは、運営者や幹部などが
それぞれ別々に会社を作りカネの流れを見え難くしているが、
実際の資金源は複数の大手通信会社系からの調査費名目のカネ。
月額で計約700万円と言い、年間にすれば1億円近く。
額はともあれ、これは通信会社系的には、
ぼう大なトラフィックを調査すると言う表向きの理由が一応は立つ。
自社系に都合の悪い書き込みがされた時に優先的に削除してもらうことも期待している」と前置きし
「通信会社系の削除の期待も含めて、2ちゃんねるは総会屋と同じになっている」と言うのだ。
0443デフォルトの名無しさん
NGNG0444デフォルトの名無しさん
NGNG鑑定スレでお願いしようとして誤爆し・ま・す・た・!
0445デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています