2012-03-22 4 views
5

Boolとは何ですか?<true>はC++です - それはboostですか?私はいくつかのサンプルコードを使用しようとしていますし、私のコンパイラは、この行をコンパイルされません

static void exitActions(Host& h, Bool<true>) {} 

コンパイラはMS VS2005です。私はBoolを認識しません - それを置き換える方法がわかりません。この既定のパラメータは、同等ですか:

static void exitActions(Host& h, bool b = true) {} 

サンプルはhttp://accu.org/index.php/journals/252です。コードはテキスト内のスニペットにすぎません。#includeについてのスニペットはないので、うまくいきません。 Boolテンプレートの定義はありません。

+1

ブールあるタイプで、excitActionsはおそらく、このタイプに基づいてオーバーロードされます。質問に表示されているエラーメッセージを追加できますか? – Marcin

+0

さて、bool引数に対する 'exitActions'の参照は、おそらく混乱するでしょう。すべての参照を 'bool 'と入力すると、おそらく事態が崩れてくるのを見ることはできませんが、もっとスマートな答えが出るまでこれを予備的な答えと考えているでしょう。 – prelic

+0

'Bool 'にカーソルを置き、 "Go to definition"を使うとどうなりますか? – Naveen

答えて

5

私はBoolはあなたには、いくつかの基本的なパターンマッチングのためにこれを使用することができます

template <bool B> struct Bool{}; 

のように定義されて推測:あなたはBool<false>Bool<true>に過負荷をかけた場合

void exitActions(Bool<true>) { std::cout << "called with true\n"; } 
void exitActions(Bool<false>) { std::cout << "called with false\n"; } 

int main() 
{ 
    exitActions(Bool<true>()); // prints "called with true" 
    exitActions(Bool<false>()); // prints "called with false" 
} 

このコースでのみ意味があります。しかしソースhttp://accu.org/index.php/journals/252(Marcinによって推測される)では、これが当てはまります。

があり、同様の関数呼び出し

Tran<T,S,T>::entryActions(host_, Bool<false>()); 
+0

この定義を使用すると、プログラムをコンパイルできます。ありがとうございます。このスタイルのプログラミングやウェブリンクの名前はありますか?それはオーバーロードされた関数のようなものですか? 1つまたは他のものは、あなたが真実を渡すか否かに依存していると言われています。あなたが言うように、それはコードの残りの文脈の中で本当に意味をなさない - 私はもっとそれを勉強します。 –

+0

私はこれまでC++でそれを見たことがありません(他のプログラミング言語ではこれはすでに書かれているようにパターンマッチングと呼ばれています)。通常は、 'template <> void exitActions (){...}'と 'template <> void exitActions (){...}'のようなものを書くでしょう。しかし、これはしばしば使われていたので、彼はこの 'Bool'タイプを導入することで短縮することに決めました。 – ipc

関連する問題