エイリアス宣言にこれらのテンプレート、変革:私はC++ 11に変換してみましたこのような私は、コンパイル時定数に基づいて、いくつかのテンプレートを持っている
const int SIG0 = 0;
template<int Sig>
struct SignalPrototype;
template<>
struct SignalPrototype<SIG0> {
typedef std::function< void() > type;
};
(私は信じて)エイリアス宣言を「expected unqualified-id before ‘using’
が、私はそれがテンプレートパラメータで何かを期待していると思いますが、私のことができます。エラーで
const int SIG0 = 0;
template<int Sig>
using SignalPrototype = std::function< void() >;
template<>
using SignalPrototype<SIG0> = std::function< void() >;
:、私はそれがいかなる形(掲示それらのちょうど1)で動作させることができませんでしたそれは型ではないので、SIG0
を入れてください。
メモ: 私はC++標準からC++ 17まで使用していますので、わからない新しいものもありがとうございます。
また、私はタイトルに「これら」が好きではありませんが、具体的な名前が何であるか分かりません。
私は実際にそれを行うことができ、私は見てみましょう:
は何あなたができることは、このように二つのアプローチを組み合わせることです私が後にしているもの) – areuz
@areuz C++ 14の 'std'名前空間には、C++ 11にはなかった' SignalPrototype_t'のようなエイリアスがたくさんあります。だから、人々はそれが役に立つと思うようです。私は 'typename'と' :: type'をいつも入力することを余儀なくされているので、私自身もそれを使います。 'type_traits'ヘッダの例をいくつか示します:http://en.cppreference.com/w/cpp/header/type_traits [概要]セクションを下にスクロールします。 – SU3