Thread View: pl.comp.lang.c
7 messages
7 total messages
Started by M.M.
Sat, 08 Aug 2020 21:09
typ szablonu zdefiniowany po użyciu - g++14 nie kompiluje :/
Author: M.M.
Date: Sat, 08 Aug 2020 21:09
Date: Sat, 08 Aug 2020 21:09
13 lines
1312 bytes
1312 bytes
To chyba powinien spokojnie skompilować:
template<
TYPEX param,
typename TYPEX = int
>
class TestX {
};
Można to jakoś 'obejść'?
Pozdrawiam
typ szablonu zdefiniowany po użyciu - g++14 nie kompiluje :/
Author: Wojciech Muła
Date: Sun, 09 Aug 2020 06:58
Date: Sun, 09 Aug 2020 06:58
1 lines
1399 bytes
1399 bytes
Coś przekombinowałeś, wystarczy template<typename T = int>
Re: typ szablonu zdefiniowany po użyciu - g++14 nie kompiluje :/
Author: M.M.
Date: Sun, 09 Aug 2020 09:59
Date: Sun, 09 Aug 2020 09:59
51 lines
2227 bytes
2227 bytes
On Sunday, August 9, 2020 at 8:58:57 AM UTC+2, Wojciech Muła wrote:
> Coś przekombinowałeś, wystarczy template<typename T = int>
Nie wiem czy przekombinowałem.
Poniższy kod (u mnie?) się nie kompiluje:
emplate<
TYPEX param,
typename TYPEX = int
>
class TestX {
};
Mogę, rzecz jasna, dać:
template<
typename TYPEX
TYPEX param,
>
class TestX {
};
Ale teraz za każdym razem muszę podawać typ, a typ int będzie może w 95%
przypadków właściwym typem:
TestX<int,50> x;
Chodzi o to, aby wygodnie sobie pisać:
TestX<50> x;
Z auto z tego co pamiętam (nie próbowałem) też się nie kompiluje:
template<
auto TYPEX
decltype(TYPEX) param,
>
class TestX {
};
Ale to też jest nieprzejrzyste rozwiązanie, bo suffixy są mało widoczne :/
TestX< 50u > x;
No ale ostatni przykład też się nie kompiluje, więc nie ma o co kruszyć kopii.
Pozdrawiam
Re: typ szablonu zdefiniowany po użyciu - g++14 nie kompiluje :/
Author: Przemek Biernat
Date: Mon, 10 Aug 2020 11:48
Date: Mon, 10 Aug 2020 11:48
40 lines
2293 bytes
2293 bytes
>
> Mogę, rzecz jasna, dać:
>
> template<
> typename TYPEX
> TYPEX param,
> >
> class TestX {
> };
>
> Ale teraz za każdym razem muszę podawać typ, a typ int będzie może w 95%
> przypadków właściwym typem:
>
> TestX<int,50> x;
>
> Chodzi o to, aby wygodnie sobie pisać:
>
> TestX<50> x;
>
>
> Z auto z tego co pamiętam (nie próbowałem) też się nie kompiluje:
>
> template<
> auto TYPEX
> decltype(TYPEX) param,
> >
> class TestX {
> };
>
>
> Ale to też jest nieprzejrzyste rozwiązanie, bo suffixy są mało widoczne :/
>
> TestX< 50u > x;
>
> No ale ostatni przykład też się nie kompiluje, więc nie ma o co kruszyć kopii.
>
> Pozdrawiam
Nie lepiej param przenieść do konstruktora?
Re: typ szablonu zdefiniowany po użyciu - g++14 nie kompiluje :/
Author: Marcin
Date: Mon, 10 Aug 2020 19:09
Date: Mon, 10 Aug 2020 19:09
66 lines
2556 bytes
2556 bytes
W dniu 09.08.2020 o 11:59, M.M. pisze:
> On Sunday, August 9, 2020 at 8:58:57 AM UTC+2, Wojciech Muła wrote:
>> Coś przekombinowałeś, wystarczy template<typename T = int>
>
> Nie wiem czy przekombinowałem.
>
> Poniższy kod (u mnie?) się nie kompiluje:
>
> emplate<
> TYPEX param,
> typename TYPEX = int
>>
> class TestX {
> };
>
>
> Mogę, rzecz jasna, dać:
>
> template<
> typename TYPEX
> TYPEX param,
>>
> class TestX {
> };
>
> Ale teraz za każdym razem muszę podawać typ, a typ int będzie może w 95%
> przypadków właściwym typem:
>
> TestX<int,50> x;
>
> Chodzi o to, aby wygodnie sobie pisać:
>
> TestX<50> x;
>
>
> Z auto z tego co pamiętam (nie próbowałem) też się nie kompiluje:
>
> template<
> auto TYPEX
> decltype(TYPEX) param,
>>
> class TestX {
> };
>
>
> Ale to też jest nieprzejrzyste rozwiązanie, bo suffixy są mało widoczne :/
>
> TestX< 50u > x;
>
> No ale ostatni przykład też się nie kompiluje, więc nie ma o co kruszyć kopii.
>
> Pozdrawiam
>
template <typename T, T param>
class TestX;
template <int param>
using TestInt = TestX<int, param>;
albo w C++17:
template <auto param>
class TestX;
Marcin
Re: typ szablonu zdefiniowany po użyciu - g++14 nie kompiluje :/
Author: M.M.
Date: Mon, 10 Aug 2020 20:54
Date: Mon, 10 Aug 2020 20:54
44 lines
2480 bytes
2480 bytes
On Monday, August 10, 2020 at 1:48:27 PM UTC+2, Przemek Biernat wrote:
> >
> > Mogę, rzecz jasna, dać:
> >
> > template<
> > typename TYPEX
> > TYPEX param,
> > >
> > class TestX {
> > };
> >
> > Ale teraz za każdym razem muszę podawać typ, a typ int będzie może w 95%
> > przypadków właściwym typem:
> >
> > TestX<int,50> x;
> >
> > Chodzi o to, aby wygodnie sobie pisać:
> >
> > TestX<50> x;
> >
> >
> > Z auto z tego co pamiętam (nie próbowałem) też się nie kompiluje:
> >
> > template<
> > auto TYPEX
> > decltype(TYPEX) param,
> > >
> > class TestX {
> > };
> >
> >
> > Ale to też jest nieprzejrzyste rozwiązanie, bo suffixy są mało widoczne :/
> >
> > TestX< 50u > x;
> >
> > No ale ostatni przykład też się nie kompiluje, więc nie ma o co kruszyć kopii.
> >
> > Pozdrawiam
>
> Nie lepiej param przenieść do konstruktora?
W tym przypadku niestety nie.
Pozdrawiam i dziękuję.
Re: typ szablonu zdefiniowany po użyciu - g++14 nie kompiluje :/
Author: M.M.
Date: Mon, 10 Aug 2020 21:02
Date: Mon, 10 Aug 2020 21:02
29 lines
2128 bytes
2128 bytes
On Monday, August 10, 2020 at 9:09:11 PM UTC+2, Marcin wrote: > template <typename T, T param> > class TestX; > > template <int param> > using TestInt = TestX<int, param>; O tym samym pomyślałem, to chyba najzwięźlejsze-kompilowane rozwiązanie w tej sytuacji. Ale: [ template <T param, typename T = int> class TestX; ] wydaje się tak naturalnym kodem, zwłaszcza gdy T ma wartość domyślną, że jestem zdziwiony iż się nie skompilowało w c++11. > albo w C++17: > > template <auto param> > class TestX; > > Marcin Próbowałem, właśnie g++14 nie skompilował. Pozdrawiam, dziękuję.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads