The attached code in 1st attachment fails with error
shown in 2nd attachment.  The compiler version is
shown in 3ird attachment.

When !defined(USE_NESTED_USING), it compiles & runs OK,
even though the template arguments should be the same
(because a nested alias of the argument used in the
OK compile was used).

Is this a bug or am I missing something?

-regards,
Larry




struct out_arg {
  enum class enums { enum_0, enum_1 };
};
template
< typename OutArg
>
struct outer {
  using enums = typename OutArg::enums;
  template <enums Enum_I, int Int>
  struct inner {
    static int const val;
  };
};

template 
< typename OutArg
>
template 
#define USE_NESTED_USING
#ifndef USE_NESTED_USING
//This works:
< typename OutArg::enums Enum_I
#else
//This causes error, even though
//Outer<OutArg>::enums == OutArg::enums
< typename outer<OutArg>::enums Enum_I
#endif
, int Int
>
int const outer<OutArg>::inner<Enum_I, Int>::val = Int;

int main() {
  return 
    outer<out_arg>::
    inner<out_arg::enums::enum_1, 1>::val;
}
/home/evansl/dwnlds/llvm/3.8/prebuilt/clang+llvm-3.8.0-x86_64-linux-gnu-ubuntu-14.04/bin/clang++
 -c -O0 -stdlib=libc++  -std=c++14 -ftemplate-backtrace-limit=0 
-fdiagnostics-show-template-tree -fno-elide-type -fmacro-backtrace-limit=0      
 -DTYPE_AT_IMPL=0   -ftemplate-depth=100  nested_template_cls_def.cpp -MMD -o 
/tmp/build/clangxx3_8_pkg/clang/libcxx/sandbox/libs/gram_stk/sandbox/nested_template_cls_def.o
 
nested_template_cls_def.cpp:30:46: error: nested name specifier 
'outer<OutArg>::inner<Enum_I, Int>::' for declaration does
      not refer into a class, class template or class template partial 
specialization
int const outer<OutArg>::inner<Enum_I, Int>::val = Int;
          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
/home/evansl/dwnlds/llvm/3.8/prebuilt/clang+llvm-3.8.0-x86_64-linux-gnu-ubuntu-14.04/bin/clang++
 --version
clang version 3.8.0 (tags/RELEASE_380/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: 
/home/evansl/dwnlds/llvm/3.8/prebuilt/clang+llvm-3.8.0-x86_64-linux-gnu-ubuntu-14.04/bin
_______________________________________________
cfe-users mailing list
cfe-users@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users

Reply via email to