私は、一般的なものとコンテナ型のどちらかを選択する必要があるコード ブロックでデータ型を選択する際に、より衒学的になることを考えていました。私の問題は、次のコード ブロックがある場合、その方法がわからないことです。誰か助けてくれませんか?size_type
size_t
container::size_type
template<typename some_container>
int func(some_container& input)
{
//Some code...
//...
decltype(input.size()) variable_x; //Choose this if defined,
size_t variable_x; //otherwise choose this
//... Some more code...
}
この場合some_container
、カスタム コンテナーである可能性があり、機能を提供しませんsize()
。size_t
この考えに至ったのは、 and container::size_type
at size_t と container::size_typeの違いを読んだことでした。コンパイル時に型が STL コンテナーかどうかを判断するも読みましたが、このアプローチは私の状況では少し面倒に感じます。