std::integral_constant
の「コンテナバージョン」を作成したいと思います。std :: integral_constantのようなコンテナを作成する
enum class A {
a = 1 << 0,
b = 1 << 1,
c = 1 << 2
};
template<typename T, T... Values>
struct static_container final {};
template<typename T, T... Ts>
constexpr auto make_static_container(T...) { // wrong
return static_container<T, Ts...>{};
}
template<typename F, F... FF>
void inline set(static_container<F, FF...>) {
std::cout << sizeof... (FF) << std::endl;
}
int main() {
constexpr static_container<A, A::a, A::b> sc1{}; //ok
constexpr auto sc2 = make_static_container(A::a, A::c); // not-ok
set(sc1);
set(sc2);
}
あなたは私が明示的なタイプでsc1
を作成することができることを見ることができます上:それは要素型と非型パラメータでパラメータ化タイプです。
今、(冗長な)列挙型を指定せずにこのような型を作成するヘルパ関数が必要です。ここ
出力は次のようになります。
2
0
任意のヒント?
取得しているエラーとは何ですか? – DeiDei
VS2015でコンパイル – wally
[clangでコンパイル](http://coliru.stacked-crooked.com/a/604bd7401ede4373) – wally