Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

编译错误 #103

Open
JohnQI8888 opened this issue Dec 27, 2023 · 4 comments
Open

编译错误 #103

JohnQI8888 opened this issue Dec 27, 2023 · 4 comments
Labels
compile-error Universal compilation error compiler-compat Compatibility with compilers

Comments

@JohnQI8888
Copy link

gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.4.0-1ubuntu122.04' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-gcn/usr --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1
22.04)

uname -a

Linux aaa-virtual-machine 6.2.0-35-generic #35~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Oct 6 10:23:26 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

What happened + What you expected to happen

cmake -B build && cmake --build build -j

                                    ;

:3:
/home/aaa/co_context/include/co_context/co/when_all.hpp:94:24: error: missing 'typename' prior to dependent type name 'meta_type::value_type'
using value_type = meta_type::value_type;
^~~~~~~~~~~~~~~~~~~~~
typename
:104:65: error: use of undeclared identifier 'variant_type'
std::conditional_t<is_all_void, index_type, index_value<variant_type>>;
^
In file included from In file included from In file included from /home/aaa/co_context/example/echo_server_MT.cpp:2:
In file included from /home/aaa/co_context/include/co_context/net.hpp:4:
/home/aaa/co_context/include/co_context/co/when_any.hpp:106:32: error: use of undeclared identifier 'variant_type'
using meta_type = any_meta<variant_type>;
^
In file included from /home/aaa/co_context/example/when_all.cpp:1:
In file included from /home/aaa/co_context/include/co_context/all.hpp:10:
In file included from /home/aaa/co_context/include/co_context/net.hpp:3:
/home/aaa/co_context/include/co_context/co/when_all.hpp:69:/home/aaa/co_context/example/echo_server.cpp:1:
In file included from /home/aaa/co_context/include/co_context/net.hpp:4:
fatal error: /home/aaa/co_context/include/co_context/co/when_any.hpp:104:65: error: use of undeclared identifier 'variant_type'
std::conditional_t<is_all_void, index_type, index_value<variant_type>>;
^

Reproduction way

Anything else

@Codesire-Deng
Copy link
Owner

相信这是一个编译器 BUG,因为 C++20 标准 已经降低了对 typename disambiguator for dependent names 的要求,项目在 gcc 11.2.1 中编译也没有问题。

我已经在 main 分支中添加了更多 typename,希望能绕开这个编译问题。

@Codesire-Deng Codesire-Deng added compiler-compat Compatibility with compilers compile-error Universal compilation error labels Dec 28, 2023
@JohnQI8888
Copy link
Author

所以 我怎么做? 用最新的版本 重新编译 可以了吗?

我希望完成一个demo 可以 计算一下一个协程切换使用的时间长度, 你是否可以给与一些帮助?

@Codesire-Deng
Copy link
Owner

所以 我怎么做? 用最新的版本 重新编译 可以了吗?

是的。git pull 之后尝试重新编译就行。

我希望完成一个demo 可以 计算一下一个协程切换使用的时间长度

项目里有这个测试,如果你的系统安装了 google benchmark (包名大概就是"benchmark"),可以按以下步骤编译运行:

cmake -B build/release --preset benchmark
cmake --build build/release -j
build/release/test/benchmark/co_await # 测量 C++20 co_await 的最低耗时
build/release/test/benchmark/lazy_yield # 测量 co_context 的调度耗时

如果你想自己写 benchmark,可以参考这个源文件:
test/benchmark/co_await.cpp

@Codesire-Deng
Copy link
Owner

Codesire-Deng commented Jan 2, 2024

顺便一提,上述 benchmark 在我的环境下(wsl2, i5-12600KF),co_await 平均延迟是 2.5ns;lazy_yield 的延迟是 2.5~3.2ns。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
compile-error Universal compilation error compiler-compat Compatibility with compilers
Projects
None yet
Development

No branches or pull requests

2 participants