auto相关内容
#include #include class C { static auto func() { return std::string("hello"); } static_assert(std::is_same::value, ""); }; GCC和Clang都不接
..
我正在用C ++编写一些模板函数,但是我不确定是否可以定义一个推断其参数类型的模板函数. 我试图用推断的参数类型定义模板,但是此示例无法编译: template auto print_stuff(auto x, auto y) { std::cout
..
我正在尝试使用C ++ 11,constexpr和auto. 我无法理解为什么此代码无法编译: template struct TestEle2 { }; template struct DStruct {int a;}; template struct TestEle2
..
有没有办法允许带有模板参数的concept与提供的任何模板参数一起使用? 即模板参数占位符的某种通配符? 用法示例: template concept derived_from_or_same_as = std::same_as || std::derived_from
..
我想知道标准委员会是否考虑过扩展C ++ 14 auto关键字来推导函数模板参数类型,就像今天在通用lambda中所存在的那样. (从这个答案中可以很好地看到) 因为它可以在lambda函数中使用,所以它也应该可以在任何函数中使用.当然,使用经典语法完全是多余的: template void f(T param); 但是能够写出同样的结果: voi
..
我听说std::function的成本要比auto重,以处理lambda函数.有效的现代C ++项目5.我想要的是通过一些示例代码来阐明为什么std::function使用比auto更多的内存的机制. 有人可以帮我吗? 编辑 class Widget { public: Widget(int i) : i_(i) {} bool operator
..
我的问题与在C ++中使用"s"后缀有关? 使用"s"后缀的代码示例: auto hello = "Hello!"s; // a std::string 可以这样写: auto hello = std::string{"Hello!"}; 我能够在网上找到应该使用"s"后缀来最大程度地减少错误并在代码中阐明我们的意图. 因此,使用"s"后缀仅对代码读者有用吗?还是使
..
什么功能使我可以将auto用于C ++ 17中的不可复制(和不可移动)类型,而不能用于C ++ 14? 考虑以下代码: struct A{ A(A const&)=delete; A(A&&)=delete; }; int main(){ auto a1 = A{}; // ok in C++17, not ok in C++14 auto&& a
..
在模板元编程中,可以对返回类型使用SFINAE来选择某个模板成员函数,即 template struct A { int sum() const noexcept { return _sum(); } private: int _data[N]; template typename std::enable_if
..
我尝试使用不同的选项在GCC 8.2下编译此C ++代码,但它始终会成功,不会产生警告并输出true: int && a = 123; decltype(auto) b = a; std::cout ::value; 与此同时,相同的代码将无法在Clang中编译,如果我对标准的理解是
..
考虑用GCC 4.7.2 g++ -std=c++11 test.cc 编译的这个简短程序 #include #include struct type{ type(int a) : v(a) {} int v; }; typedef std::shared_ptr type_ptr; int main(){ int value =
..
如果在两种情况下都使用expr而不带括号,则decltype(auto)和decltype(returning expression)作为函数(模板)的返回类型有什么区别? auto f() -> decltype(auto) { return expr; } // 1 auto f() -> decltype(expr) { return expr; } // 2 f以上可以在任何上下
..
bar1和bar2的类型有什么区别? int foo = 10; auto bar1 = &foo; auto *bar2 = &foo; 如果bar1和bar2均为int*,在bar2声明中写入指针声明符(*)是否有意义? 解决方案 声明完全相同. auto的工作原理(几乎)与模板类型推论相同.明确地加星号使代码更易于阅读,并使程序员意识到bar2是指针.
..
C ++ 11中的auto关键字可以代替功能模板和专业化功能吗?如果可以,使用模板函数和专业化方法比仅将函数参数键入为auto有什么优势? template void myFunction(T &arg) { // ~ } vs. void myFunction(auto &arg) { // ~ } 解决方案 总而言之,auto不能
..
Java是否像C ++中一样具有auto变量类型? 一个例子: for ( auto var : object_array) std::cout
..
如何找出使用auto关键字时编译器推断出的类型? 示例1:更简单 auto tickTime = 0.001; 被推导为float或double? 示例2:更复杂(和我目前的头痛): typedef std::ratio sec; std::chrono::duration timePerTick2{0.001}; auto n
..
我正试图将函数std::max作为模板参数传递给模板化函数,但是由于某些原因,编译器会打印无法推断出函数类型的错误.一个简单的例子也重现了同样的问题.它可以与自己的max2函数一起使用,但不能与STL std::max: 一起使用 #include template T max2(const T& a, const T& b) { return s
..
我在about自动引用时遇到了麻烦. const int i = 1; auto & ri1 = i; auto & ri2 = 1; //error 为什么推导出ri1 const int而不是ri2类型? 谢谢! 解决方案 由于i具有类型const int,而1具有类型int.
..
我该如何做,但要采用可以编译的方式,并希望没有疯狂的typedef,该怎么做? auto b; auto g; if (vertical) { b = [=, &b_](int x, int y) -> bool { return b_[x + y*w]; }; g = [=, &g_](int x, int y) -> int& { return g_[x + y*w];
..
我有: #include #include using namespace std; int main() { auto a = -SOME_CONST_MAX; vector myVec {a, a, a, a}; } 我不知道SOME_CONST_MAX的类型,但是我想制作一个-SOME_CONST_MAX类型的向量.
..