This question was inspired by this answer. I wonder what are/were the best ways to simplify in given standards. One I know and personally used/still use since C++11 is macro REQUIRES(x)
:
With definition:
template<long N>
struct requires_enum
{
enum class type
{
none,
all
};
};
#define REQUIRES(...) requires_enum<__LINE__>::type = \
requires_enum<__LINE__>::type::none, \
bool PrivateBool = true, \
typename std::enable_if<PrivateBool && (__VA_ARGS__), int>::type = 0
And use if even for non-templated function calls:
template<REQUIRES(sizeof(int)==4)>
int fun() {return 0;}
int main()
{
fun(); //only if sizeof(int)==4
}
What are the other good techniques?
Aucun commentaire:
Enregistrer un commentaire