提问人:heretoinfinity 提问时间:11/6/2023 更新时间:11/6/2023 访问量:76
如何从返回显式类型 [duplicate] 的元组的函数初始化 const 原语
How to initialize a const primitive from a function returning a tuple with explicit type [duplicate]
问:
我有一个函数,它不像这个问题那样通过引用返回值。我想在调用函数时调用该函数并初始化变量,但这是不可能的。const
const
我尝试声明变量,但这只有在变量不是 .有没有办法在此调用后按类型初始化变量?const
const
我在这个问题的答案中尝试了这个建议,它奏效了,但令我惊讶的是,当我明确使用时它不起作用。为什么没有它就不能工作?使用后的类型不是因为这是函数返回的吗?我想使用显式类型来使其更易于阅读。auto
size_t
auto
auto
size_t
#include <tuple>
#include <cstddef>
#include <iostream>
using namespace std;
std::tuple<const size_t, const size_t> returnSize_T_Tuple() {
const size_t i = 2;
const size_t j = 3;
return {i, j};
}
std::tuple<const int, const int> returnIntTuple() {
const int i = 2;
const int j = 3;
return {i, j};
}
int main(){
// const size_t s_i; // error: uninitialized ‘const s_i’ [-fpermissive]
// std::tie(const size_t x, const size_t y) = returnSize_T_Tuple(); // error: expected primary-expression before ‘const’
const auto [x,y] = returnSize_T_Tuple();
const size_t [a,b] = returnSize_T_Tuple(); // error: structured binding declaration cannot have type ‘const size_t’ {aka ‘const long unsigned int’}
cout << "x = " << x << "; " << "a = " << a;
}
答:
0赞
Péter Farkas
11/6/2023
#1
根据P0217R3结构装订的拟议措辞:
auto 类型说明符还用于引入分解声明 (8.5 [dcl.decomp])。
因此,基于此,在这种情况下,它并不是一个真正的类型说明符,它只是声明分解表达式所需的语法,同时作为“将 const 和 ref-qualifiers 粘贴到上面的东西”。auto
评论
auto
auto
auto
size_t