gpt4 book ai didi

c++ - 转发复制构造函数的问题

转载 作者:行者123 更新时间:2023-11-28 07:51:42 26 4
gpt4 key购买 nike

<分区>

有人知道为什么转发复制 ctor 不起作用吗?

关于一种类型是 vector 而另一种是堆栈的编译器错误???

#include "stdafx.h"
#include <iostream>
#include <vector>
#include <type_traits>

using namespace std;

template<class T>
class stack{
public:
stack();

template<class X>
stack(X&& other);

template<typename X>
void push(X&& element);

T const & top() const;

void pop();

inline std::size_t const size() const;

typedef std::vector<T> vector_type;

private:
std::vector<T> elements;
};


template<class T>
stack<T>::stack(){}

template<class T>
template<class X>
stack<T>::stack(X&& other) : elements(std::forward<typename X>(other.elements)){

}

template<class T>
template<class X>
void stack<T>::push(X&& element){
this->elements.push_back(std::forward<X>(element));
}

template<class T>
T const & stack<T>::top() const{
return this->elements[this->elements.size() -1];
}

template<class T>
inline std::size_t const stack<T>::size() const{
return this->elements.size();
}

template<class T>
void stack<T>::pop(){
this->elements.pop_back();
}

template<class T,int N>
stack<T> get_stack_of_n_defaults(){

stack<T> s;

for(int i = 0; i < N; ++i){
s.push( T()); // should pass by rvalue ref;
}

return s;

}


int main()
{

stack<int> s = get_stack_of_n_defaults<int,5>();

for(int i = 0; i <= 10; ++i){
s.push(i);
}

cout << s.size() << endl;

for(int i = 0; i <= 10; ++i){
cout << s.top() << endl;;
s.pop();
}

cout << s.size() << endl;

return 0;
}

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com