整数テンプレートパラメータの値に基づいてメンバ変数のタイプを設定するためにstd :: conditionalを使用しようとするプログラムです。std :: conditionalを使用してテンプレートパラメータに基づいてメンバタイプを選択する
私は私のプログラムは、次の出力を与えることを期待#include <stdio.h>
#include <type_traits>
using namespace std;
class cool{
public:
cool(){ printf("Cool!\n"); }
};
class notcool{
public:
notcool(){ printf("Not cool!\n"); }
};
template<int N>
class myclass{
public:
typedef std::conditional<N==5,cool,notcool> thetype;
thetype theinst;
};
int main(){
printf("Testing\n");
myclass<5> myc5;
myclass<6> myc6;
printf("Done testing\n");
return 0;
}
:
テスト
クール!
クールでない!
をテストする代わりに、出力が
でテスト
私のコンパイラはGCC 4.9である、と私はこのプログラムをコンパイルした方法だった
をテスト完了完了
コマンドg ++ test -std = C++ 11 -o test
を使用します。誰も私の期待する出力がプログラムに与えられない理由を教えてもらえますか?
これらはコンストラクターです。オブジェクトmyclassがインスタンス化されると自動的に呼び出されます。 – ttb