Variadic Templates no Visual C++ 2012

25 views
Skip to first unread message

Rodrigo Madera

unread,
Feb 21, 2013, 8:11:35 PM2/21/13
to ccppb...@googlegroups.com
Pessoal,

Alguém instalou o CTP de novembro pra brincar com Variadic Templates no MSVC?


Quais seus resultados se sim?

Happy coding,
Mx

Уθя¡ςκ

unread,
Feb 21, 2013, 9:41:14 PM2/21/13
to ccppb...@googlegroups.com

Microsoft ainda tá lenta, acho que tão amargando a implementação inicial baseada em macros.

Esse é um teste interessante:

template<int... I>
struct with
{
    template<int F(decltype(I)...)>
    struct call
    {
        static constexpr int value = F(I...);
    };
};

constexpr int f(int i) {return i;}
constexpr int g(int i, int j) {return i + j;}

int main()
{
    int u = with<0>::call<f>::value;
    constexpr int v = with<0, 1>::call<g>::value;
}

msvc november ctp = fail, gcc 4.7.2 = fail, clang 3.2 = success, gcc 4.8.0 = success.

[]'s

Уθя¡ςκ

unread,
Feb 21, 2013, 9:59:07 PM2/21/13
to ccppb...@googlegroups.com
Pra um teste isolado de variadic talvez seja melhor remover os constexpr, parece não ser bem suportado. Quantidade de erros bem menor, só sobra erros de incapacidade de resolução:

template<int... I>
struct with
{
    template<int F(decltype(I)...)>
    struct call
    {
        static const int value = 42;
    };
};

int f(int i) {return i;}
int g(int i, int j) {return i + j;}

int main()
{
    int u = with<0>::call<f>::value;
int v = with<0, 1>::call<g>::value;
}

[]'s

Felipe Magno de Almeida

unread,
Feb 22, 2013, 4:51:52 AM2/22/13
to ccppb...@googlegroups.com
2013/2/21 Уθя¡ςκ <obl...@gmail.com>:
>

[snip]

> Esse é um teste interessante:
>
> template<int... I>
> struct with
> {
> template<int F(decltype(I)...)>
> struct call
> {
> static constexpr int value = F(I...);
> };
> };
>
> constexpr int f(int i) {return i;}
> constexpr int g(int i, int j) {return i + j;}
>
> int main()
> {
> int u = with<0>::call<f>::value;
> constexpr int v = with<0, 1>::call<g>::value;
> }
>
>
> msvc november ctp = fail, gcc 4.7.2 = fail, clang 3.2 = success, gcc 4.8.0 =
> success.

Removeram a restrição de só se poder passar ponteiros como template
arguments de entidades definidas fora da atual TU, e.g. extern?

> []'s
>
> --

[]'s
--
Felipe Magno de Almeida

Rodrigo Madera

unread,
Feb 22, 2013, 11:25:19 AM2/22/13
to ccppb...@googlegroups.com
Estou com medo de atualizar minha máquina de produção de levar um susto na hora de compilar.

Por outro lado, código muuuito atualizado com Variadics duvido que fique muito portátil, mesmo entre MS <--> GCC.

Terei de criar uma VM pra testar então. Vai que...

Mx

2013/2/22 Felipe Magno de Almeida <felipe.m...@gmail.com>

--
--
Antes de enviar um e-mail para o grupo leia:
                     http://www.ccppbrasil.org/wiki/Lista:AntesdePerguntar
--~--~---------~--~----~---------------------------------~----------~--~----~
[&] Colabore com a Pesquisa de Preferência de Conteúdo
              para Eventos do Grupo C & C++ Brasil:
                        http://www.surveymonkey.com/s/GBBGTXN
------~----~-------~---~---~---~---~----------------~------------~---------~
[&] C & C++ Brasil - http://www.ccppbrasil.org/
Para sair dessa lista, envie um e-mail para ccppbrasil-...@googlegroups.com
Para mais opções, visite http://groups.google.com/group/ccppbrasil
--~--~---------~--~----~--~-~--~---~----~-----------------~--~----------~
Emprego & carreira:  vag...@ccppbrasil.org
http://groups.google.com/group/dev-guys?hl=en

---
Você está recebendo esta mensagem porque se inscreveu no grupo "ccppbrasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para ccppbrasil+...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



P.

unread,
Feb 22, 2013, 11:55:18 AM2/22/13
to ccppb...@googlegroups.com
Em sexta-feira, 22 de fevereiro de 2013 13h25min19s UTC-3, Rodrigo Madera escreveu:
Estou com medo de atualizar minha máquina de produção de levar um susto na hora de compilar.



Esse CTP não substituirá o seu compilador, ele instalará um compilador adicional.

--
 P.

Rodrigo Madera

unread,
Feb 22, 2013, 11:59:29 AM2/22/13
to ccppb...@googlegroups.com
Sim, eu vi na explicação do Sr. STL.

Mas meu medo é "vazar" alguma coisa, mesmo sem eu mudar meu toolset.

Mx

2013/2/22 P. <pedro....@gmail.com>

--

Уθя¡ςκ

unread,
Feb 22, 2013, 12:05:38 PM2/22/13
to ccppb...@googlegroups.com
Isso já aconteceu comigo em edições passadas, quando eu usava...

Julio Cezar Novais Raffaine

unread,
Feb 23, 2013, 9:28:18 PM2/23/13
to ccppb...@googlegroups.com
Relacionado a este assunto, e ao video do STL no link do Madera, um video do Herb Sutter falando sobre o CTP, mas principalmente dele falando sobre o C++, as mudanças e o futuro, vale a pena.



2013/2/22 Уθя¡ςκ <obl...@gmail.com>



--
Julio Cezar Novais Raffaine
Sistemas de Engenharia, Odebrecht SA
Reply all
Reply to author
Forward
0 new messages