#169 closed ожидается проверка (задача сдана)
ha6 super late
Reported by: | Грабовой Филипп | Owned by: | Vladimir Rutsky |
---|---|---|---|
Priority: | проверка | Milestone: | |
Component: | HA#6 bind | Version: | |
Keywords: | Cc: |
Description
Change History (10)
comment:1 Changed 7 years ago by
comment:2 Changed 7 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
Tested revision 1066 by grabovoy.philipp.
Smoke tests
test | stage | result | info | log |
---|---|---|---|---|
gcc62 | WARNING | |||
run | SUCCESS | |||
valgrind | SUCCESS | |||
gcc62-asan | WARNING | |||
asan | SUCCESS | |||
clang-san | WARNING | |||
san | SUCCESS | |||
Common header used in some tests: common.h
comment:3 Changed 7 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|
comment:4 Changed 7 years ago by
Tested revision 1067 by grabovoy.philipp.
All tests passed. Good job!
comment:5 Changed 7 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
Замечания:
- Объявляя таким образом placeholder-ы, вы нарушаете ODR при использовании
bind.hpp
в нескольких единицах трансляции:
details::placeholder<1> _1 = details::placeholder<1>(); details::placeholder<2> _2 = details::placeholder<2>();
Попробуйте скомпилировать один выполняемый файл, слинкованный из двух cpp:
// part1.cpp #include "bind.hpp" int main() { }
// part2.cpp #include "bind.hpp"
$ g++ -Wall -std=c++14 part1.cpp part2.cpp /tmp/cc1k45Xa.o:(.bss+0x0): multiple definition of `fn::_1' /tmp/ccHNkK07.o:(.bss+0x0): first defined here /tmp/cc1k45Xa.o:(.bss+0x1): multiple definition of `fn::_2' /tmp/ccHNkK07.o:(.bss+0x1): first defined here collect2: error: ld returned 1 exit status
- В шаблонном типе
types_at_index
можно обойтись без второго аргумента (bool
), делая частичную специализацию только по первому аргументу.
template <std::size_t, bool, typename> struct types_at_index; template <std::size_t Ind, typename ListType> struct types_at_index<Ind, true, ListType> { using type = typename types_at_index<Ind - 1, (Ind - 1 > 0), typename ListType::base_list_t>::type; }; template <typename ListType> struct types_at_index<0, false, ListType> { using type = ListType; };
comment:6 Changed 7 years ago by
Tested revision 1069 by grabovoy.philipp.
All tests passed. Good job!
comment:7 follow-up: 9 Changed 7 years ago by
Зачинил types_at_index
статиком, как обсуждали в первой части курса — это хороший c++ style?
comment:8 Changed 7 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|
comment:9 Changed 7 years ago by
Resolution: | → задача сдана |
---|---|
Status: | new → closed |
Replying to grabovoy.philipp:
Зачинил
types_at_index
статиком, как обсуждали в первой части курса — это хороший c++ style?
Лучше обернуть в анонимный namespace, или сделать константным (тогда ODR не будет нарушен).
Решение зачтено.
Роботик, приди!