aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIan Taylor <ibtaylor@gmail.com>2019-06-06 17:16:08 -0400
committerAnna Gringauze <annagrin@microsoft.com>2019-06-06 14:16:08 -0700
commit66809c6852a0250243db893ab5460bfdace063c4 (patch)
treecd723c83b572a8426898d7a3630c9871b4abd347
parentb74b286d5e333561b0f1ef1abd18de2606624455 (diff)
downloadplatform_external_Microsoft-GSL-66809c6852a0250243db893ab5460bfdace063c4.tar.gz
platform_external_Microsoft-GSL-66809c6852a0250243db893ab5460bfdace063c4.tar.bz2
platform_external_Microsoft-GSL-66809c6852a0250243db893ab5460bfdace063c4.zip
make TypeListIndexer constexpr (#733)
-rw-r--r--include/gsl/multi_span10
1 files changed, 5 insertions, 5 deletions
diff --git a/include/gsl/multi_span b/include/gsl/multi_span
index f1a909e..0c1506e 100644
--- a/include/gsl/multi_span
+++ b/include/gsl/multi_span
@@ -518,31 +518,31 @@ namespace details
struct TypeListIndexer
{
const TypeChain& obj_;
- TypeListIndexer(const TypeChain& obj) : obj_(obj) {}
+ constexpr TypeListIndexer(const TypeChain& obj) : obj_(obj) {}
template <std::size_t N>
- const TypeChain& getObj(std::true_type)
+ constexpr const TypeChain& getObj(std::true_type)
{
return obj_;
}
template <std::size_t N, typename MyChain = TypeChain,
typename MyBase = typename MyChain::Base>
- auto getObj(std::false_type)
+ constexpr auto getObj(std::false_type)
-> decltype(TypeListIndexer<MyBase>(static_cast<const MyBase&>(obj_)).template get<N>())
{
return TypeListIndexer<MyBase>(static_cast<const MyBase&>(obj_)).template get<N>();
}
template <std::size_t N>
- auto get() -> decltype(getObj<N - 1>(std::integral_constant<bool, N == 0>()))
+ constexpr auto get() -> decltype(getObj<N - 1>(std::integral_constant<bool, N == 0>()))
{
return getObj<N - 1>(std::integral_constant<bool, N == 0>());
}
};
template <typename TypeChain>
- TypeListIndexer<TypeChain> createTypeListIndexer(const TypeChain& obj)
+ constexpr TypeListIndexer<TypeChain> createTypeListIndexer(const TypeChain& obj)
{
return TypeListIndexer<TypeChain>(obj);
}