は、次のプログラムを考えてみましょう。 Linuxの場合:テンプレート一定の型変換演算子
test.cc: In function ‘int main()’:
test.cc:17: error: passing ‘const Pack<8>’ as ‘this’ argument of ‘Pack<s>::operator X&() [with X = double, int s = 8]’ discards qualifiers
なぜですか? const型変換演算子を使用しないのはなぜですか?どのように私はこれを修正することができます便利なテンプレート型変換演算子(定数ではなくconstバージョン)。 ありがとう!
GCC(とComeau)とは別のエラーが発生します。変換機能はありません。おそらく、 'operator double()'のような変換関数を探していて、適切なものを見つけられないからです(提供されたものも参照を持っているからです)。 - それが最初の良いアイデアなら、名前付きメンバ関数を使用してみませんか? – UncleBens
@UncleBens、あなたは正しいです、下記を参照してください。 –
packクラスは任意の型に変換可能である必要があるため、double()演算子は使用しません。私が掲示した例は、問題を示すために削除されています。 – Nathan