MicrosoftがGitHubでMITライセンス公開しているWILのGitHub Wikiの記事を和訳・改変したものです。素人による翻訳なので、誤訳や著作権上の問題などありましたらご連絡いただけますと幸いです。
テンプレートメタプログラミングヘルパー(原題:Template metaprogramming helpers)
Raymond Chen、2019/7/23、リビジョン1個
WILは少数のテンプレートメタプログラミングヘルパーを含みます。
使い方
テンプレートメタプログラミングヘルパーはwil/common.h
に定義されています。
#include <wil/common.h>
variadic_logical_or
template<bool...> struct variadic_logical_or { static const bool value; // いずれかのテンプレート引数がtrueならtrue };
variadic_logical_or
構造体はブール型テンプレート引数のいずれかがtrue
であればwistd::true_type
から派生します。その他の場合、wistd::false_type
から派生します。
C++17からはメタプログラミングヘルパーはほとんど不要になりました。同様の効果がstd::disjunction
クラス(cppreference)や畳み込み式(cppreference)により得られます。
使用例
enum class WidgetColor { Red, White, Blue, Black }; template< WidgetColor color, bool isColorful = variadic_logical_or<color == WidgetColor::Red, color == WidgetColor::Blue>::value> struct Widget { ... };
著作権表示
この記事は以下の著作物を使用しています。
Copyright (c) Microsoft Corporation. All rights reserved. https://github.com/microsoft/wil/blob/master/LICENSE