Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
nou
Založen: 28. 07. 2007 Příspěvky: 1047
|
|
Návrat nahoru |
|
|
Tringi
Založen: 28. 07. 2007 Příspěvky: 290
|
Zaslal: 18. listopad 2011, 21:48:44 Předmět: |
|
|
Herb Sutter je hodně dobrej _________________ WWW | GitHub | TW |
|
Návrat nahoru |
|
|
nou
Založen: 28. 07. 2007 Příspěvky: 1047
|
Zaslal: 30. listopad 2011, 20:43:56 Předmět: |
|
|
som si dneska povedal ze vyskusam si pracu s nejakymi ficurkami z noveho C++11. tak som si naimplementoval jednoduchu triedu na signaly a sloty. by ma zaujimalo ci je to prelozitelne aj v najnovsom MSVC
kód: |
template<typename ... P>
class FunctionCall
{
public:
virtual void call(P...par)=0;
};
template<typename T, typename ... P>
class FunctionCallT : public FunctionCall<P...>
{
T *o;
void (T::*f)(P...);
public:
FunctionCallT(T &obj, void (T::*fun)(P...))
{
o = &obj;
f = fun;
}
void call(P...par)
{
(o->*f)(par...);
}
};
template <typename...P>
class Signal
{
map<void *,unique_ptr<FunctionCall<P...>>> cal;
public:
template<typename T>
void connect(T &o, void (T::*f)(P...))
{
cal[&o] = unique_ptr<FunctionCallT<T, P...>>(new FunctionCallT<T, P...>(o, f));
}
void disconnect(void *o)
{
cal.erase(o);
}
void operator()(P...par)
{
for(auto &i : cal)
i.second->call(par...);
}
};
|
cely kod: http://nopaste.ceske-hry.cz/223400 _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
|
pcmaster
Založen: 28. 07. 2007 Příspěvky: 1824
|
Zaslal: 1. prosinec 2011, 10:06:57 Předmět: |
|
|
Este nie som s novou syntaxou oboznameny, ale:
ClCompile napsal: |
error C2143: syntax error : missing ',' before '...' |
na:
kód: |
template<typename T, typename ... P> |
Ta elipsa (tri bodky, ?) sa mu tam nepaci. MSVC 2010 bez SP. _________________ Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est. |
|
Návrat nahoru |
|
|
nou
Založen: 28. 07. 2007 Příspěvky: 1047
|
Zaslal: 1. prosinec 2011, 17:40:37 Předmět: |
|
|
hmm chvilka googlenia a vyzera to ze VS2010 zatial nepodporuje variadic templates. mozno s tym SP1 ano. _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
|
Deluxe
Založen: 31. 07. 2007 Příspěvky: 235 Bydliště: Oslavany
|
Zaslal: 1. prosinec 2011, 21:09:34 Předmět: |
|
|
nou: Na VS 2010 SP1 to same... jedine ze by se muselo nekde neco povolit (nebo pouzit nejaky prepinac...). |
|
Návrat nahoru |
|
|
nou
Založen: 28. 07. 2007 Příspěvky: 1047
|
Zaslal: 1. prosinec 2011, 22:33:50 Předmět: |
|
|
na gcc sa to musi povolit cez -std=c++0x
ale z C++11 je napriklad unique_ptr<> a for(auto &i : vec); takze ak zoberie to tak je C++11 povolene. _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
|
Mnemonic
Založen: 28. 07. 2007 Příspěvky: 93
|
Zaslal: 4. prosinec 2011, 19:33:07 Předmět: |
|
|
nou napsal: |
hmm chvilka googlenia a vyzera to ze VS2010 zatial nepodporuje variadic templates. mozno s tym SP1 ano. |
Podle tohohle nebude variadic templates podporovat ani VC11. Ale lidi začli dost řvát, tak třeba si to ještě MS rozmyslí. |
|
Návrat nahoru |
|
|
nou
Založen: 28. 07. 2007 Příspěvky: 1047
|
Zaslal: 4. prosinec 2011, 20:09:44 Předmět: |
|
|
no vyzera to ze GCC ma najkompletnejsiu podporu pre C++11 http://wiki.apache.org/stdcxx/C++0xCompilerSupport
ICC ma zopar feture navyse oproti MSVC. _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
|
|