変数をその制限の 1 つに設定するより良い方法はありますか?
varname = std::numeric_limits<decltype(varname)>::max();
特に初期化時
int64_t varname = std::numeric_limits<decltype(varname)>::max();
タイプが変更された場合、これを見逃すのは簡単なので、私は通常、そのような式でタイプを使用したくありません。
変数をその制限の 1 つに設定するより良い方法はありますか?
varname = std::numeric_limits<decltype(varname)>::max();
特に初期化時
int64_t varname = std::numeric_limits<decltype(varname)>::max();
タイプが変更された場合、これを見逃すのは簡単なので、私は通常、そのような式でタイプを使用したくありません。
そして、完全を期すために、合法性の端を回避します:
#include <iostream>
#include <limits>
template<class T>
T biggest(T&)
{
return std::numeric_limits<T>::max();
}
int main()
{
std::int64_t i = biggest(i);
std::cout << i << std::endl;
return 0;
}
自動はどうですか?
auto varname = std::numeric_limits<int64_t>::max();
タイプについて言及している場所は1つだけです。
レ
型が変更されると見逃されやすいので、私は通常、そのような式で型を使用したくありません。
簡単だ:
auto varname = std::numeric_limits<int64_t>::max();
std::numeric_limits
テンプレート エイリアスや関数テンプレートの定義など、多くの方法で冗長性を減らすことができます。
template< class Type >
using Limits_ = std::numeric_limits<Type>;
auto varname = Limits_<int64_t>::max();
また
template< class Type >
constexpr auto max_of() -> Type { return std::numeric_limits<Type>::max(); }
auto varname = max_of<int64_t>();
C++14 以降ではmax_of
、テンプレート変数を作成できます。これは、説明されたことがない何らかの理由で、好む人もいます。