• ベストアンサー

makeのエラーについて

プログラムの設定をしていたのですが、以下のようなエラーが出てしまいました。 sdpa_io.cpp:688:32: error: cannot pass objects of non-trivially-copyable type ‘c lass mpf_class’ through ‘...’ どのようなエラーなのかご存知の方がいらっしゃいましたら、 ご教授のほどよろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.6

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

k673018t
質問者

お礼

ご親切に回答いただきまして感謝しております。 ベストアンサーとさせていただきました。 *皆さんの助言の数々にたいしまして、この場をお借りして御礼申し上げます。

すると、全ての回答が全文表示されます。

その他の回答 (5)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.5

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

k673018t
質問者

お礼

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

すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

SDPA-GMP をひろって確認しました. やりたいことを想像するに, value を value.get_d() に置き換えればいいような感じです.

k673018t
質問者

お礼

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

すると、全ての回答が全文表示されます。
  • jjk65536
  • ベストアンサー率59% (66/111)
回答No.3

そのエラーが拝みたくて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.7.3.1-install.txt sdpa_io.cppの688行目も見てみたんですが、バージョンが違うのか ただのdouble型の代入でした。 質問の回答とは違いますが、この構成でコンパイルできたよって情報も質問者様には有益かと思い レスさせていただきました。

k673018t
質問者

お礼

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

すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

「渡しちゃいけないものを引数に渡した」という結果は同じなんだけど, 英語の訳は変>#1. 可変長引数をとる関数の (... で示される) 可変長引数部分で渡すオブジェクトには制約があって, その中に「trivially copyable じゃないとダメ」というのが多分あるんだと思います (注: 未確認です). ところが, そこに class mpf_class という「trivially copyable でないクラス」のオブジェクトを入れちゃったのでこけているんでしょう. コンパイラのバージョンなどを確認して, そのフリーソフトを出しているところに聞いてみるのがよいかと.

k673018t
質問者

お礼

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

すると、全ての回答が全文表示されます。
回答No.1

「mpf_classクラスの可変引数に、非自明コピー可能型のオブジェクトを渡すことはできません」です。 渡した引数が自明じゃない(何なんだか確定できない)ので、それは引数に指定できんよ、って事です。

k673018t
質問者

お礼

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

すると、全ての回答が全文表示されます。

関連するQ&A