Perguntas com a marcação «typetraits»

5
Como funciona `is_base_of`?
Como funciona o código a seguir? typedef char (&yes)[1]; typedef char (&no)[2]; template <typename B, typename D> struct Host { operator B*() const; operator D*(); }; template <typename B, typename D> struct is_base_of { template <typename T> static yes check(D*, T); static no check(B*, int); static const bool value = …



1
std :: is_constructible retorna um valor inconsistente para o construtor privado
Quais são as regras pelas quais std::is_constructiblelida com construtores privados? Dado o seguinte código: #include <iostream> class Class { private: Class() { } }; template <typename T> class Test { public: static void test() { std::cout //<< std::is_constructible<Class>::value << std::is_constructible<T>::value << std::endl; } }; int main() { Test<Class>::test(); } Isso …
13 c++  typetraits 

1
Por que static_cast é necessário na implementação de is_nothrow_constructible do gcc?
Retirado da implementação do GCC de type_traitspor que é static_castnecessário aqui? template <typename _Tp, typename... _Args> struct __is_nt_constructible_impl : public integral_constant<bool, noexcept(_Tp(declval<_Args>()...))> {}; template <typename _Tp, typename _Arg> struct __is_nt_constructible_impl<_Tp, _Arg> : public integral_constant<bool, // Why is `static_cast` needed here? noexcept(static_cast<_Tp>(declval<_Arg>()))> {};

3
Por que não é necessário usar o typename para tipos dependentes no seguinte caso?
Eu tenho lido sobre como remover a referência de um tipo aqui . Dá o seguinte exemplo: #include <iostream> // std::cout #include <type_traits> // std::is_same template<class T1, class T2> void print_is_same() { std::cout << std::is_same<T1, T2>() << '\n'; } int main() { std::cout << std::boolalpha; print_is_same<int, int>(); print_is_same<int, int &>(); …

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.