+10
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
//В mathc.hpp:
typedef float import (float);
//В неком cpp функция:
float cm() {
import calcFpu;
//...
float src = //...
float res = calcFpu(src);
return res;
}
//В mathc.cpp:
void calcFpu(float){
//...
void calcSSE(float){
//...
Мои глаза... В перлы.
http://ideone.com/RBAMyv
LispGovno,
27 Ноября 2012
+77
- 1
delete[] Memory, leak; //Унарные операторы, такие уринарные.
Былинный отказ.
igumnovf,
23 Ноября 2012
+15
- 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
#include <iostream>
#include <functional>
template<class Container, class F, class A>
auto accumulate(Container c, F f, A acc) -> A
{
auto id = [](const A& a) -> const A& {return a;};
typedef decltype(std::begin(c)) Iterator;
const std::function<A(const Iterator& lst, const std::function<A(const A&)>&)> doIt =
[&](const Iterator& lst, const std::function<A(const A&)>& cont) -> A
{
if(lst==c.end())
return cont(acc);
else
{
auto conter=[&](const A& acc) -> A {return cont(f(*lst, acc));};
return doIt(lst+1, conter);
}
};
return doIt(std::begin(c), id);
}
int main() {
std::cout<<accumulate({1,2,3,4}, std::plus<int>(), 0);
return 0;
}
Похоже написал какой-то монадолог.
http://ideone.com/y4Dm9z
Пример использования accumulate сам накатал.
Я побаловался с этим примером, чтобы разобраться и GCC ожидаемо упал:
http://ideone.com/XWfuoP
Я убежден, что эта функция должна была выглядеть как-то так:
template<class Container, class F>
accumulate(const Container& c, const F& f=std::plus<decltype(*(std::begin(c)))>(), const decltype(*(std::begin(c))) acc=decltype(*(std::begin(c)))()) -> decltype(*(std::begin(c)))
{
return std::accumulate(c.begin(), c.end(), acc, f);
}
//Вызов этой функции:
accumulate({1,2,3,4});
Ну и я погуглил на тему этого говнокода и нашел на функциональном языке похожий:
let fold_right func acc list =
let rec loop list cont = //сюда мы передаем текущую функцию континуации
match list with
|[] -> cont acc //а вот и наше ключевое вычисление.
|head::tail -> loop tail (fun racc -> cont (func head racc))
loop list (fun x -> x)
LispGovno,
23 Ноября 2012
+17
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
#include <iostream>
int main() {
std::cout << (2,0 * 2,5) << std::endl; // 5
std::cout << (0,625 * 6,4) << std::endl; // 4
std::cout << (2,5 * 2,0) << std::endl; // 5?
return 0;
}
Почему в с++ умножение некоммутативно?
http://ideone.com/Erp3uv
bormand,
21 Ноября 2012
+16
- 1
- 2
- 3
//...
ret.value(_val != "" ? _val : "");
//...
bodeaux,
21 Ноября 2012
+21
- 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
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
//Было:
int foo()// ;
{ ;
int a ;
float b ; //В правой части старые
typedef int testing ; //полезные комментарии
std::cout << "Ho-ho-ho" ;
a=0 ;
b=1.0f ;
if (a==b)// ;
{ ;
std::cout <<"Yet another caption";
std::cout <<"Hi-hi-hi" ;
bar() ;
;
} ;
using namespace std ;
for (int i =0;i<10;i++)// ;
{ ;
;
std::cout <<"Hello, world!" ;
std::cout <<"Yet another line" ;
} ;
return 0 ;
;
} ;
//Кто-то что-то решил поменять
//Стало:
int foo()// ;
{ ;
int a ;
float b ; //В правой части старые
typedef int testing ; //полезные комментарии
std::cout << "Ho-ho-ho" ;
a=0 ;
b=1.0f ;
if (a==b)// ;
{ ;
std::cout <<"Yet another caption";
std::cout <<"Hi-hi-hi" ;
bar() ;
;
} ;
double c;
//Слева комментарии требующие
//проверки. Wtf???Зачем здесь с???
using namespace std ;
for (int i =0;i<10;i++)// ;
{ ;
;
std::cout <<"Hello, world!" ;
std::cout <<"Yet another line" ;
} ;
return 6666 ;
;
} ;
//Быстро определили по линии из точек c
//запятой место в котором произошло изменение.
//Если согласились с ним восстанавливаем линию.
Бесплатная распределенная говносистема контроля версий. Git и SVN нервно курят в сторонке.
igumnovf,
20 Ноября 2012
+23
- 1
- 2
typedef const AbstractParameter ConstAbstractParameter;
class Parameter: public ConstAbstractParameter{
GCC это не компилирует, но в 2008 ms vs компилируется без предупреждений. Я это как увидел, так сразу переписал на
class Parameter: public AbstractParameter{
А вот теперь я дома и не могу заснуть. Гложет чувство, что я поступил не правильно. Такое чувство как-будто этот const, пусть и не в рамках стандарта С++, но что-то он делал.
LispGovno,
20 Ноября 2012
+9
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
class A
{
public:
A () : p (new SomeType)
{
assert ("It must be non-zero" && p);
}
~A ()
{
Box <SomeType> deleter (p);
p = 0;
}
private:
SomeType *p;
};
А вот и применение класса Box
Setry,
19 Ноября 2012
+22
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
class ClassA
{
};
class ClassB : private ClassA
{
public:
ClassA& AsClassA()
{
return *this;
}
};
Setry,
19 Ноября 2012
+22
- 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
template<class T>
class Box
{
private:
explicit Box(const Box&);
Box& operator = (const Box&);
public:
explicit Box()
: m_value(0)
{}
explicit Box(T* value)
: m_value(value)
{}
~Box()
{
std::auto_ptr <T> toDelete(m_value);
}
T* Release()
{
T* const result(m_value);
m_value = 0;
return result;
}
void Reset(T* value)
{
std::auto_ptr <T> toDelete(m_value);
m_value = value;
}
private:
T* m_value;
};
Setry,
19 Ноября 2012