プロが教えるわが家の防犯対策術!

プログラムの設定をしていたのですが、以下のようなエラーが出てしまいました。

sdpa_io.cpp:688:32: error: cannot pass objects of non-trivially-copyable type ‘c
lass mpf_class’ through ‘...’

どのようなエラーなのかご存知の方がいらっしゃいましたら、
ご教授のほどよろしくお願い致します。

A 回答 (6件)

あ~, やっぱりバージョン落とすと挙動が変わりますか....



#2 でバージョンを持ち出したのは, 実はこのエラーメッセージにある
trivially copyable
という概念が C++11 で導入された概念であって, C++98 にはなかったものだからです. つまり, 「ある程度古いコンパイラ」だと「何も考えずに与えられた引数をそのまま渡している」ために「期待通りの動作」になるのに対し, 「新しいコンパイラ」では trivially copyable のチェックにひっかかって渡せなくなってしまっている, という可能性が考えられたんです. まあ, そこまでは規格でも確認できていないんですけどね.
    • good
    • 0
この回答へのお礼

ご親切に回答いただきまして感謝しております。
ベストアンサーとさせていただきました。

*皆さんの助言の数々にたいしまして、この場をお借りして御礼申し上げます。

お礼日時:2012/01/25 17:50

や, 手元には動かせるような環境がないので, ソースを見て「たぶんこんな感じ」と判断しただけです.



これで動きそうなら作者に報告した方がよいでしょう.
    • good
    • 0
この回答へのお礼

ご指摘されていたように
コンパイラのバージョンを下げると違う動きをしました。

もう少し調べてみます。

お礼日時:2012/01/23 15:47

SDPA-GMP をひろって確認しました.



やりたいことを想像するに, value を value.get_d() に置き換えればいいような感じです.
    • good
    • 0
この回答へのお礼

ありがとうございます。
回答者様の環境では、プログラムが動いたのでしょうか?

お礼日時:2012/01/20 14:20

そのエラーが拝みたくてSDPAをコンパイルしてみたのですが、残念ながら普通にコンパイルできてしまいました。



OS: Ubuntu11.04 64bit(update済み)
構成: atlas3.9.63 + lapack-3.4.0 + sdpa.7.3.1
参考サイト:
http://sdpa.indsys.chuo-u.ac.jp/sdpa/files/sdpa. …

sdpa_io.cppの688行目も見てみたんですが、バージョンが違うのか
ただのdouble型の代入でした。

質問の回答とは違いますが、この構成でコンパイルできたよって情報も質問者様には有益かと思い
レスさせていただきました。
    • good
    • 0
この回答へのお礼

そこまでしていただいて、本当にありがとうございます。

しかしながら、現在はSDPA-GMPというものをつかっております。
説明書のようにコンパイルできないのは、私が使っているPCのOSやコンパイラのバージョンがあってないのかもしれない(私のものは説明書にかかれているOSより新しいです)と当りをつけているのですが…
頭を悩ませている次第です。

お礼日時:2012/01/19 11:40

「渡しちゃいけないものを引数に渡した」という結果は同じなんだけど, 英語の訳は変>#1.



可変長引数をとる関数の (... で示される) 可変長引数部分で渡すオブジェクトには制約があって, その中に「trivially copyable じゃないとダメ」というのが多分あるんだと思います (注: 未確認です). ところが, そこに class mpf_class という「trivially copyable でないクラス」のオブジェクトを入れちゃったのでこけているんでしょう.

コンパイラのバージョンなどを確認して, そのフリーソフトを出しているところに聞いてみるのがよいかと.
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。

コンパイラのバージョンですね。
確かに、私の使っているものの方が新しいはずです。
OSも新しいものでした。
新しいのに使えないということもあるのでしょうか…

お礼日時:2012/01/19 11:45

「mpf_classクラスの可変引数に、非自明コピー可能型のオブジェクトを渡すことはできません」です。



渡した引数が自明じゃない(何なんだか確定できない)ので、それは引数に指定できんよ、って事です。
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。
ダウンロードしたフリーソフトなので戸惑っていました…
見直してみます。

お礼日時:2012/01/18 16:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!