template<class _Ty, class _Alloc = allocator<_Ty> >
class Clist {
private:
bool isLoop = false;
list<_Ty> myList;
public:
Clist() { myList = list<_Ty>; }
Clist(bool loop, size_type _Count) { isLoop = loop; myList = list<_Ty>(_Count); }
Clist(bool loop, size_type _Count, const _Ty& _Val) { isLoop = loop; myList = list<_Ty>(_Count, _Val); }
template<class _Iter, class = typename enable_if<_Is_iterator<_Iter>::value, void>::type>
Clist(bool loop, _Iter _First, _Iter _Last) { isLoop = loop; myList = list<_Ty>(_First, _Last); }
Clist(const _Myt& _Right) { isLoop = _Right.isLoop; myList = list<_Ty>(_Right.myList); }
Clist(bool loop, _XSTD initializer_list<_Ty> _Ilist, const _Alloc& _Al = allocator_type()) { isLoop = loop; myList = list<_Ty>(_Ilist, _Al); }
}
例えば
Clist<int> first(true, { 1, 2, 3 });
Clist<int> second(first);
Clist<int> third({ 1, 2, 3 });
のようにするとfirstは6つめのコンストラクタが呼ばれ、secondは5つめのコピーコンストラクタが呼ばれ、ここまでは意図した通り動いてくれているのですが
thirdのようにした場合なぜかコンパイルが成功し、5つめのコピーコンストラクタが呼ばれてしまいます。
thirdのようにした場合はエラーがでるようにするにはどうすればいいでしょうか。よろしくお願いします。