小编dun*_*ain的帖子

空嵌套元组错误

#include <iostream>
#include <tuple>
int main(){

auto bt=std::make_tuple(std::tuple<>(),std::tuple<std::tuple<>>()); //Line 1
auto bt2=std::make_tuple(std::tuple<>(),std::tuple<>());             //Line 2
}
Run Code Online (Sandbox Code Playgroud)

为什么第1行给出编译错误而第2行编译正常?(在Gcc和Clang中测试过)

有可能的解决方法吗?

clang的错误消息

/usr/include/c++/4.6/tuple:150:50: error: ambiguous conversion from derived class 'std::_Tuple_impl<0, std::tuple<>,
      std::tuple<std::tuple<> > >' to base class 'std::_Head_base<0, std::tuple<>, true>':
    struct std::_Tuple_impl<0, class std::tuple<>, class std::tuple<class std::tuple<> > > -> _Tuple_impl<0UL + 1, class std::tuple<class std::tuple<> > > -> _Head_base<1UL, class std::tuple<class std::tuple<> >, std::is_empty<class tuple<class tuple<> > >::value> -> class std::tuple<class std::tuple<> > -> _Tuple_impl<0, class std::tuple<> > -> _Head_base<0UL, class std::tuple<>, std::is_empty<class …
Run Code Online (Sandbox Code Playgroud)

c++ nested tuples c++11

6
推荐指数
1
解决办法
485
查看次数

标签 统计

c++ ×1

c++11 ×1

nested ×1

tuples ×1