- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
#include <tuple>
#include <utility>
#include <array>
namespace detail {
template <typename... Types, std::size_t... Indexes>
auto make_array(const std::tuple<Types...> &t, std::index_sequence<Indexes...>) {
using Tuple = std::tuple<Types...>;
using ValueType = typename std::tuple_element<0, Tuple>::type;
return std::array<ValueType, sizeof...(Types)>{ std::get<Indexes>(t)... };
}
template <typename Value>
constexpr Value fib(std::size_t idx) {
switch (idx) {
case 0: return 1;
case 1: return 1;
default: return fib<Value>(idx - 1) + fib<Value>(idx - 1);
}
}
}
template <class... Args>
auto to_array(const std::tuple<Args...> &t) {
return detail::make_array(t, std::index_sequence_for<Args...>{});
}
template <typename Value, std::size_t size>
class Fibonacci {
public:
constexpr auto as_array() const { return to_array(as_tuple()); }
constexpr operator std::array<Value, size>() const { return as_array(); }
private:
template <std::size_t offset = 0>
constexpr auto as_tuple() const {
return std::tuple_cat(std::tuple{detail::fib<Value>(offset)}, as_tuple<offset + 1>());
}
template <>
constexpr auto as_tuple<size - 1>() const { return std::tuple{detail::fib<Value>(size - 1)}; }
};
int main() {
std::array a = Fibonacci<int, 10>().as_array();
return a[5];
}
template <std::херня{std::поебень<дрисня>(говно)} >(пидор)
p.s. а, не, clang trunk скомпилял
А GCC эту херню вообще не собирает. Типичная ситуация для крестов
#define FIB_INIT_ARRAY(len)
std::array<uint64_t,len>
C/|uLLlKOM_MED/|EHHb|u_nemyx
https://pbs.twimg.com/media/D0dsupqXQAIGtJt.jpg
Монада, не?
Глупые, либо наоборот, слишком хитрые люди (депутаты) зачастую не брезгают демагогией, в частности, используют многословие, принцип "вокруг да около": много говорил, да ничего не сказал.
Интересно, разрабы крестокомпиляторов когда-нибудь начнут пилить оптимизатор для хуйни, которая считается в компилтайме?
Даёшь крестоUBы в крестоконпайлтайме!
И про big-little endian пишушню и возможную разницу в округлении для всяких плавучих питухов на разных архитектурах не забудьте.
Просто напиши в комменте какие проц и ось нужны для конпеляции.
Без эмулятора тут никуда не деться особо.
А если перепутаешь - оно просто начнёт выполнять хуйню от другого проца во время конпеляции.
Компания «Borland» об этом не думала, поэтому у них в «Трубопаскакале» числа округлялись по-разному, в зависимости от того, проводилось вычисление в компайлтайме (кокококонстанты) или в рантайме. И даже соснольный кокококомпилятор и кокококомпилятор, встроенный в IDE, могли округлять константы по-разному.
Окей, чтобы понять уровень завшивленности, задам простой нубский вопрос: допустимо ли без каких-либо уорнингов сравнивать строку с числом?
тупорылый гость
позову маму, кажется, мой подгузник пора менять.
JS в современных браузерах перед исполнением компилируется в некоторое внутреннее представление (обычно это байткод, типа как у Java, но только в отличие от Java он не стандартизирован).
PHP тоже компилируется в байткод (если не включить opcache/xcache/apc, то он будет повторно компилироваться на каждый запрос).
Хотя всё-таки языки JS и PHP считают интерпретируемыми, поскольку отдельного ритуала компиляции у них нет.
В «Питоне» оператор === не нужен, потому что в нём по умолчанию сравнение строгое.
Надо вспомнить, где он ещё может быть. В «Ruby» есть. В компилируемом «ActionScript» есть.
Выходит, что наличие === зависит не от компилируемости/интерпретируемости, а от типизации. Этот оператор присутствует в языках с очень слабой типизацией.
Шестой пёрл таки жив?
А ещё прикольно, что «PHP 5.7» переименовали в «PHP 7.0», а «MySQL 5.8» –— в «MySQL 8.0» ещё на стадии разработки. Вероятно, решили, что стыдно, что столько лет не было новой мажорной версии.
Это они научились у «Java» (версия 1.5 была переименована в 5.0).
P.S. Ещё Windows NT 6.1 переименовали в 7.0; NT 6.2 переименовали в 8.0; NT 6.3 перименовали в 8.1. Легко запомнить, да?
http://www.jsoftware.com/help/dictionary/vocabul.htm
или вот такой, разбитый по "частям речи":
http://www.jsoftware.com/help/dictionary/partsofspeech.htm
Где каждый примитив подробно описан и даны примеры. Есть ли таке для "Pearl"?
Почему ватличии, я же кинул ссылку на доки?
В этом твоём "paerlop" нет сцылок по закорючкам, сложнее искать незнакомку.
Давай меряца закорючками.
Вот, например, в "J" есть глагол, который реализует конченый автомат:
http://www.jsoftware.com/help/dictionary/d332.htmЛевый агрумент —– описание автомата, правый –— срока или мосив для парснига.
1. перевести число в строку;
2. использовать посимвольное сравнение без учёта регистра, отбросив разделитель разрядов либо жестко заменив его на точку;
3. ПРОФИТ.
Возможно, также +0 и -0 будут будут приведены к одному числу, но это неточно.
В любом случае (раз уж поступило предложение снять зелёный), я не вижу каких-то преимуществ у этого метода по сравнению с банальным «abs(a - b) < MaJleHbKNN_nemyx»: он медленнее, сложнее в реализации и определённо хуже читаем.
SameValue, FloatToStr, проверьте.
FloatToStr тянет функцию FloattoText, код которой - 3 с половиной экрана на ассембрере.
Профит? На самом деле, это Ваш php сосёт.
Но с другой стороны, вызывать FloatToStr лишь для сравнения —– это потеря скорости. В Delphi больше выбора, чем в PHP, как сделать, и можно сделать эффективнее.
А вот до первых граблей двойное равно используют. В каком-то форумном движке хэши паролей сравнивались через двойное равно. Если хэш пароля юзера начинался с "0e", то в этого юзера можно было залогиниться чуть ли не с любым паролем.
Значит, в SMF скопировали ошибку из phpBB. Какой багор )))
Вообще не могу представить, где оно может понадобиться. Если мне нужно сравнить выражения как целые числа, я могу явно использовать приведение: intval($a) === intval($b). Для других случаев есть floatval, strval, boolval. Так хотя бы понятно, к чему всё приводится перед сравнением.