4 ms·
GCC extensions make my brain hurt :( Should just use C++ at that point: template<class T> bool is_space(const T & x) { return x == ‘ ‘ || x ==
by kindfellow92 9y ago
GCC extensions make my brain hurt :( Should just use C++ at that point:
template<class T>
bool is_space(const T & x) {
return x == ‘ ‘ || x == ‘\n’;
}
- pjmlp 9y agoEven better if you make it: template<class T> constexpr bool is_space(const T & x) { return x == ' ' || x == '\n'; } Debuggable, type safe and same performance as straight C code.
- IvanVergiliev 9y agoAnd throw an `inline` in there just to be more likely to end up with something macro-like.
- atilaneves 9y ago`constexpr` is implicitly `inline`: http://en.cppreference.com/w/cpp/language/inline http://en.cppreference.com/w/cpp/language/inline
- gpderetta 9y agoorthogonally, templates are also implicitly inline. Then again, inline does not mean what most people think.
- kindfellow92 9y ago“inline” is more about linkage than about actual inlining. The compiler will in-line regardless of that attribute.
- kindfellow92 9y agoConstexpr is not necessary. Only required if you want to ensure that a variable is initialized with a pre-computed value. The compiler will optimize in either case if it can, regardless of the constexpr attribute.
- pjmlp 9y ago> Only required if you want to ensure that a variable is initialized with a pre-computed value Yep.
- klmr 9y agoThe function can be trivially implemented in C, since you don’t need a generic input argument type. No idea why OP chose macros in the first place.