1

機能するかどうかを確認するためだけに、この簡単なコードを書き#include <decimal/decimal>ました。

#include <iostream>
#include <decimal/decimal>

using namespace std;

int main ()
{
    cout << "Hello, world!" << endl;

    return 0;
}

私はそれをコンパイルしました:

$ g++ main.cpp -o exe

しかし、次のエラー メッセージが表示されます。

In file included from main.cpp:2:0:
/opt/local/include/gcc47/c++/decimal/decimal:39:2: error: #error This file requires compiler and library support for ISO/IEC TR 24733 that is currently not available.
/opt/local/include/gcc47/c++/decimal/decimal:230:56: error: unable to emulate 'SD'
/opt/local/include/gcc47/c++/decimal/decimal:251:5: error: 'std::decimal::decimal32::decimal32(std::decimal::decimal32::__decfloat32)' cannot be overloaded

... さらに多くの同様のエラー ... (Mats Petersson によって削除されました)

これは何を意味するのでしょうか?どうすれば修正できますか?

4

1 に答える 1

4

gcc をビルドするときに、 TR24732の C の 10 進サポートのサポートを有効にすることができます。C TR は組み込み型のようなものを作成しますが、これ_Decimal64には. これらの組み込み型は、ビルド時に 10 進サポートを含めるように gcc が構成されている場合、C++ でも使用できます。<decimal.h>decimal64

C++ の 10 進サポートは TR27433 で定義されており、 を含めることで利用可能になります<decimal/decimal>。C++ での gcc 10 進サポートは、gcc が 10 進サポートを有効にしてコンパイルされている場合にのみ利用できるようです。つまり、C コードと同じ組み込み型を使用しているようです。

どちらの場合も、gcc の 10 進サポートは、それぞれの TR で指定されたすべてをカバーしていないようです。特に、前回チェックしたときは、I/O サポートがありませんでした。

于 2013-01-05T19:29:18.060 に答える