- 1
- 2
/* For C++ compliance - cannot use "this" keyword */
#define this this_
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
Всего: 13
−96
/* For C++ compliance - cannot use "this" keyword */
#define this this_
Где-то в недрах какого-то цисковского проекта. Что только не встретишь в этом странном мире.
+137
#include <iostream>
template <typename T>
struct Symbol {};
template <>
struct Symbol<int> {
static constexpr const char value = 'd';
};
template <>
struct Symbol<float> {
static constexpr const char value = 'f';
};
template<std::size_t N, typename T>
constexpr bool check_arg_part(const char (&s)[N], size_t i, T d)
{
if (i == N)
return true;
if (i < N - 1) {
if (s[i] == '%') {
if (s[i + 1] != Symbol<T>::value)
return false;
}
}
return check_arg_part(s, i + 1, d);
}
template<std::size_t N, typename T>
constexpr bool check_arg(const char (&s)[N], T d) {
return check_arg_part(s, 0, d);
}
int main(int , char*[]) {
std::boolalpha(std::cout);
constexpr bool r = check_arg("foo is int: %d", 1);
std::cout << "Argument integer is correct: " << r << std::endl;
constexpr bool r1 = check_arg("foo is float: %f", 1.0f);
std::cout << "Argument float is correct: " << r1 << std::endl;
constexpr bool r2 = check_arg("foo is float: %f", 1);
std::cout << "Argument int is correct: " << r2 << std::endl;
return 0;
}
По мотивам http://govnokod.ru/17925:
Функция в compile time проверяет соответствие типов. Работает на clang и почему-то валится на gcc.
+51
class PrimitiveList : public QList<Primitive>
{
public:
using QList<Primitive>::QList;
PrimitiveList mid(int pos, int length = -1) const
{
auto &&list = QList<Primitive>::mid(pos, length);
return static_cast<PrimitiveList&&>(list);
}
};
Необычное использование move семантики.