考虑下面的代码片段: struct A { auto foo(), bar(); }; auto A::foo() { return 1; } auto A::bar() { return 'a'; } int main() { } 它在Clang ++ 3.7.0中编译得很好。 它在G ++ 5.2.0中失败 : main.cpp: In member function 'auto A::bar()': main.cpp:7:24: error: inconsistent deduction for 'auto': 'int' and then 'char' auto A::bar() { return 'a'; } 自动返回types推演是否强制在单个语句中声明的多个函数具有相同的返回types?
当我尝试添加布局边距到TableViewCell上的标签,使用Xcode上的右侧面板时,我尝试添加显式边距(顶部,左侧,底部,右侧)。 但是,只要我input一个数字值,或点击箭头来改变值,Xcode崩溃。 我附上了一张照片来显示我正在尝试添加布局边距的面板,以及它在哪里崩溃。 任何想法,为什么它不会让我调整利润率?
这是来自Scott Meyers的C ++ 11 Notes Sample的代码, int x; auto&& a1 = x; // x is lvalue, so type of a1 is int& auto&& a2 = std::move(x); // std::move(x) is rvalue, so type of a2 is int&& 我无法理解auto&& 。 我有一些auto理解,从中我会说, auto& a1 = x应使types的a1作为int& 从引用代码,这似乎是错误的。 我写了这个小代码,在gcc下运行。 #include <iostream> using namespace std; int main() { int x […]
auto模板参数有哪些优点(可能)会在C ++ 17中引入? 当我想实例化模板代码时,它只是auto扩展吗? auto v1 = constant<5>; // v1 == 5, decltype(v1) is int auto v2 = constant<true>; // v2 == true, decltype(v2) is bool auto v3 = constant<'a'>; // v3 == 'a', decltype(v3) is char 我还从这个语言function中获得了什么?
#include <vector> #include <algorithm> void foo( int ) { } int main() { std::vector< int > v( { 1,2,3 } ); std::for_each( v.begin(), v.end(), []( auto it ) { foo( it+5 ); } ); } 编译时,上面的例子会像这样启动错误输出: h4.cpp: In function 'int main()': h4.cpp:13:47: error: parameter declared 'auto' h4.cpp: In lambda function: h4.cpp:13:59: error: 'it' was not […]
在C ++ 11中,我可以像这样迭代一些容器: for(auto i : vec){ std::cout << i << std::endl; } 但是我知道这是毫无必要的,因为我只需要打印 vec的值就可以得到vec每个元素的副本,所以我可以这样做: for(auto &i : vec){ std::cout << i << std::endl; } 但是我想确保vec的值永远不会被修改,并遵守const的正确性,所以我可以这样做: for(const auto &i : vec){ std::cout << i << std::endl; } 所以我的问题是:如果我只需要看一些容器的值,不会最后一个循环( const auto &i )总是首选,因为没有额外的副本效率提高( 编辑 :每个元素的) vec ? 我有一个我正在开发的程序,我正在考虑在整个过程中进行这样的改变,因为效率是非常关键的(我在第一个地方使用C ++的原因)。
我已经手动将文章转换为Markdown语法几天,现在变得相当乏味。 其中一些是3或4页,斜体和其他强调的文字贯穿始终。 有没有更快的方法转换(.rtf | .doc)文件来清理Markdown语法,我可以利用?
我发现这样的代码: template <typename T, typename T1> auto compose(T a, T1 b) -> decltype(a + b) { return a+b; } 我想到了所有的细节,这些细节对我来说是新的,但是其中之一。 请告诉我,我在哪里可以阅读,在function标题中箭头运算符( -> )是什么意思? 我想纯粹逻辑上,那->运算符决定一个types,这将通过auto得到,但我想得到这个直,但不能find信息。
我想知道是否存在一些函数自动格式化一个数字的小数,所以如果我有: <?php // $sql_result["col_number"] == 1,455.75 number_format ($sql_result["col_number"], 2, ".", ""); // will return 1455.75 // $sql_result["col_number"] == 1,455.00 number_format ($sql_result["col_number"], 2, ".", ""); // could I get 1455 instead of 1455.00? ?> 所以我的答案是,如果确实存在某种方式来删除小数,如果我的数据库中有DECIMAL数据只有当它是圆的? 或者我应该做那样的事情? <?php // $sql_result["col_number"] == 1,455.00 str_replace(".00", "", (string)number_format ($sql_result["col_number"], 2, ".", "")); // will return 1455 ?>
第一个问题:是否有可能“强制”一个const_iterator使用自动? 例如: map<int> usa; //…init usa auto city_it = usa.find("New York"); 我只是想查询,而不是改变city_it指出的任何东西,所以我想有city_it是map<int>::const_iterator 。 但是通过使用auto, city_it和map::find()的返回types是一样的,它是map<int>::iterator 。 任何build议?