0

文字列リテラルをパラメーターとして受け取るテンプレート クラスがあります。コードは問題なく動作しますが、コンパイル時のチェックを使用して生成をスキップしif (S)たり、else本体をブロックしたりできるかどうか、1 つ質問があります。(__if_exists や #if、特性などのようなもの)。A<nullptr>別の関数を定義する特殊化を行うことができることを理解していprint()ますが、これを行う他の (より単純な) 方法があるかどうかも知りたいです。ありがとう!

template<char const* S = nullptr>
class A
{
public:
    void print()
    {
        if (S)
            cout << S << endl;
        else
            cout << "nullptr" << endl;
    }
};
4

2 に答える 2

0

あなたの場合、 S のデフォルト値を「nullptr」またはその他の定数文字列として設定できませんか? もちろん、これは実際に S を NULL にする必要がない場合に機能しますが、if チェックをスキップします。

于 2013-10-15T07:02:58.550 に答える