1
max(int、size_t)を呼び出すコードがたくさんあります。 このエラーを抑制する賢明な方法はありますか?それは、最大で動作するので、エラーを抑制するmax(size_t&、int)
それは愚かなの一種である(整数、0)
私はこれを行うさせて頂いております:size_t i = 0;
#include <algorithm>
int main()
{
size_t i = 2;
size_t m = std::max(i, size_t(2));
// size_t m = std::max(i, 2); error: no matching function for call to 'max(size_t&, int)'
}
:
代替は、異なるタイプの引数を受け取り、「正しい」の一般的なタイプを(それがマクロで行われた同様にいるかのように)返す独自の(i、2) 'を提供します。これはunsigned longリテラル' max(i、2UL) 'を使用することもできます。システム)。 –
max
を書くことです'static_cast'は機能スタイルのキャストではありません)、いくつかのオプションがあります。すでに提案されているように、 'i'をintに変更すると、明示的なテンプレートパラメータ' maxC++は '2'が' size_t'型であるとコンパイラに指示するリテラルサフィックスを提供していないので、このキャストはおそらくあなたができる最良のものです( '2'を名前定数 - もう1つの選択肢)。そのような目的のための機能的またはCスタイルのキャストは、扱いにくい 'static_cast'よりも適切です。 – AnT
@AnT:まあ、 'size_t演算子" "_st(unsigned long long x){return x; } '。接尾辞_predefined_はありません。 – MSalters