1
0

Fixed Style

Still fails CheckBasicStyle.lua dua to issue with rvalue references and templates
This commit is contained in:
Tycho 2015-03-01 14:51:07 +00:00
parent 3f61255fe1
commit bdea6c92b3
2 changed files with 15 additions and 13 deletions

View File

@ -942,7 +942,7 @@ public:
{ {
auto FinalRivers = auto FinalRivers =
std::make_shared<cIntGenChoice<2, 7>>(a_Seed + 12) std::make_shared<cIntGenChoice<2, 7>>(a_Seed + 12)
>> MakeIntGen<cIntGenZoom <10>>(a_Seed + 11) >> MakeIntGen<cIntGenZoom <10>>(a_Seed + 11)
>> MakeIntGen<cIntGenSmooth<8>>(a_Seed + 6) >> MakeIntGen<cIntGenSmooth<8>>(a_Seed + 6)
>> MakeIntGen<cIntGenSmooth<6>>(a_Seed + 5) >> MakeIntGen<cIntGenSmooth<6>>(a_Seed + 5)

View File

@ -71,14 +71,17 @@ public:
}; };
template<size_t size, class... Args> template<size_t size, class... Args>
struct PackToInt { struct PackToInt
enum { {
enum
{
value = size - sizeof...(Args), value = size - sizeof...(Args),
}; };
}; };
template<class Gen, class... Args> template<class Gen, class... Args>
class cIntGenFactory { class cIntGenFactory
{
public: public:
@ -88,13 +91,10 @@ public:
m_args(std::make_tuple<Args...>(std::forward<Args>(a_args)...)) m_args(std::make_tuple<Args...>(std::forward<Args>(a_args)...))
{ {
} }
//X >> Y template <class LhsGen>
//Y(X) std::shared_ptr<Gen> construct(LhsGen&& lhs)
//cIntGenFactory<cIntGenZoom<10, 10>, int>::construct<std::shared_ptr<cIntGenChoice<2, 7, 7> > > {
template<class LhsGen>
std::shared_ptr<Gen> construct(LhsGen&& lhs) {
return std::make_shared<Gen>(std::get<PackToInt<sizeof...(Args), Args>::value>(m_args)..., std::forward<LhsGen>(lhs)); return std::make_shared<Gen>(std::get<PackToInt<sizeof...(Args), Args>::value>(m_args)..., std::forward<LhsGen>(lhs));
} }
@ -104,12 +104,14 @@ private:
}; };
template<class T, class RhsGen, class... Args> template<class T, class RhsGen, class... Args>
std::shared_ptr<RhsGen> operator>> (std::shared_ptr<T> lhs, cIntGenFactory<RhsGen, Args...> rhs) { std::shared_ptr<RhsGen> operator>> (std::shared_ptr<T> lhs, cIntGenFactory<RhsGen, Args...> rhs)
{
return rhs.construct(static_cast<std::shared_ptr<typename T::IntGenType>>(lhs)); return rhs.construct(static_cast<std::shared_ptr<typename T::IntGenType>>(lhs));
} }
template<class Gen, class... Args> template<class Gen, class... Args>
cIntGenFactory<Gen, Args...> MakeIntGen(Args&&... args) { cIntGenFactory<Gen, Args...> MakeIntGen(Args&&... args)
{
return cIntGenFactory<Gen, Args...>(std::forward<Args>(args)...); return cIntGenFactory<Gen, Args...>(std::forward<Args>(args)...);
} }